add example of websocket API use

This commit is contained in:
Manuel Araoz 2014-07-31 16:07:14 -03:00
parent 2174f3e4be
commit fe2f6ec6c4
3 changed files with 91 additions and 2 deletions

View File

@ -3,13 +3,20 @@
// server-side socket behaviour
var ios = null; // io is already taken in express
var util = require('bitcore').util;
var mdb = require('../../lib/MessageDb').default();
module.exports.init = function(io_ext) {
ios = io_ext;
ios.sockets.on('connection', function(socket) {
socket.on('subscribe', function(topic) {
console.log('subscribe ' + topic);
socket.join(topic);
});
socket.on('message', function(m) {
mdb.addMessage(m.payload, m.from, m.to, function(err) {
if (err) throw err; // TODO: handle
});
});
});
};
@ -54,9 +61,12 @@ module.exports.broadcastSyncInfo = function(historicSync) {
};
module.exports.broadcastMessage = function(from, to, ts, message) {
console.log('sending socket: %s, %s, %s, %s', from, to, ts, JSON.stringify(message));
if (ios) {
ios.sockets.in(to).emit(from + '-' + ts, message);
console.log('sending message '+to);
ios.sockets.in(to).emit(from, {
payload: message,
ts: ts
});
}
}

78
examples/messages.html Normal file
View File

@ -0,0 +1,78 @@
<!doctype html>
<html>
<head>
<title>Socket.IO chat</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font: 13px Helvetica, Arial;
}
form {
background: #000;
padding: 3px;
position: fixed;
bottom: 0;
width: 100%;
}
form input {
border: 0;
padding: 10px;
width: 90%;
margin-right: .5%;
}
form button {
width: 9%;
background: rgb(130, 224, 255);
border: none;
padding: 10px;
}
#messages {
list-style-type: none;
margin: 0;
padding: 0;
}
#messages li {
padding: 5px 10px;
}
#messages li:nth-child(odd) {
background: #eee;
}
</style>
</head>
<body>
<ul id="messages"></ul>
<form action="">
<input id="m" autocomplete="off" />
<button>Send</button>
</form>
<script src="http://localhost:3001/socket.io/socket.io.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script>
var socket = io('http://localhost:3001');
$('form').submit(function()
{
var payload = $('#m').val()
socket.emit('message',
{
payload: payload,
from: 'SIN_A',
to: 'SIN_B'
});
$('#m').val('');
return false;
});
socket.emit('subscribe', 'SIN_B');
socket.on('SIN_A', function(msg)
{
$('#messages').append($('<li>').text(msg.ts+':'+JSON.stringify(msg.payload)));
});
</script>
</body>
</html>

View File

@ -59,6 +59,7 @@ var messageKey = function(from, to, ts) {
};
MessageDb.prototype.addMessage = function(m, from, to, cb) {
console.log('adding message');
var key = messageKey(from, to);
var value = m;
this.db.put(key, value, cb);