Example node.js websocket server, to be used with the Contiki websocket client
This commit is contained in:
parent
4f13d637e6
commit
5625a01baf
6
examples/websockets/node/Makefile
Normal file
6
examples/websockets/node/Makefile
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
install:
|
||||||
|
npm install websocket
|
||||||
|
|
||||||
|
|
||||||
|
run:
|
||||||
|
nodejs example-server.js
|
57
examples/websockets/node/example-server.js
Normal file
57
examples/websockets/node/example-server.js
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var serverPort = 8080;
|
||||||
|
|
||||||
|
var websocket = require('websocket').server;
|
||||||
|
var http = require('http');
|
||||||
|
|
||||||
|
var server = http.createServer(function(request, response) {
|
||||||
|
response.writeHead(200, {'Content-Type': 'text/plain'});
|
||||||
|
response.write('This is a websocket server, not intended for http\n');
|
||||||
|
response.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
server.listen(serverPort, function() {
|
||||||
|
console.log('Server is listening on port ' + serverPort);
|
||||||
|
});
|
||||||
|
|
||||||
|
var wsServer = new websocket({
|
||||||
|
httpServer: server
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
var connections = [];
|
||||||
|
|
||||||
|
function broadcastMessage(message) {
|
||||||
|
for (var i = 0; i < connections.length; i++) {
|
||||||
|
connections[i].sendUTF(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
wsServer.on('request', function(request) {
|
||||||
|
/* Save the connection */
|
||||||
|
var connection = request.accept(null, request.origin);
|
||||||
|
|
||||||
|
/* Store the connection in the list of connections */
|
||||||
|
var connectionIndex = connections.push(connection) - 1;
|
||||||
|
|
||||||
|
console.log('Connection from ' + connection.remoteAddress + '.');
|
||||||
|
|
||||||
|
broadcastMessage('Connection from ' + connection.remoteAddress + '.');
|
||||||
|
|
||||||
|
connection.on('message', function(message) {
|
||||||
|
if (message.type === 'utf8') {
|
||||||
|
console.log((new Date()) + ' Message received: ' +
|
||||||
|
message.utf8Data);
|
||||||
|
broadcastMessage(message.utf8Data);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// user disconnected
|
||||||
|
connection.on('close', function(connection) {
|
||||||
|
console.log((new Date()) + ' Connection lost: ' +
|
||||||
|
connection.remoteAddress);
|
||||||
|
connections.splice(connectionIndex, 1);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
Loading…
Reference in a new issue