Does anyone know how to create sockjs-node (SockJS - WebSocket emulation) or Shoe standalone server?
Is it possible to crate without http Server?
Just need to exchange data with dnode
, and static pages are not necessary.
For instance, when I do on node server side:
var shoe = require('shoe');
var dnode = require('dnode');
var http = require('http');
var server = http
.createServer()
.listen(9999);
var echo = shoe
.createServer()
.on('connection', function(c)
{
var d = dnode(
{
test: function()
{
console.log('--------');
}
});
c
.on('data', function(message)
{
c.write(message);
})
.on('close', function() {});
c
.pipe(d)
.pipe(c);
c.on('close', function() {});
})
.installHandlers(server,
{
prefix: '/dnode'
});
The following code(Client Side)
var d = dnode()
.on('remote', function(remote)
{
remote.test();
});
d
.pipe(shoe('http://localhost/dnode'))
.pipe(d);
Fails with the following error:(Chrome)
GET http://localhost/dnode/info app.bundle.js:14681
AbstractXHRObject._start app.bundle.js:14681
(anonymous function)
Could not find a way with SockJS or Shoe, so I switched with websocket-stream.
Here's a working code:
node server
'use strict';
var ws = require('ws');
var websocketStream = require('websocket-stream');
var dnode = require('dnode');
var http = require('http');
var HTTPserver = http
.createServer()
.listen(9999);
var WSserver = new ws.Server(
{
server: HTTPserver
});
WSserver
.on('connection', function(s)
{
var c = websocketStream(s);
var d = dnode(
{
test: function(f)
{
console.log('--------');
f('hello');
}
});
c
.pipe(d)
.pipe(c);
});
browser client
'use strict';
var websocketStream = require('websocket-stream');
var dnode = require('dnode');
var c = websocketStream('ws://localhost:9999');
var d = dnode()
.on('remote', function(remote)
{
remote.test(function(msg)
{
alert(msg);
});
});
c
.pipe(d)
.pipe(c);