[英]How to create sockjs (SockJS - WebSocket emulation) or Shoe standalone server (node.js)?
Does anyone know how to create sockjs-node (SockJS - WebSocket emulation) or Shoe standalone server? 有谁知道如何创建sockjs节点 (SockJS-WebSocket仿真)或Shoe独立服务器?
Is it possible to crate without http Server? 没有http服务器,是否可以建立箱子?
Just need to exchange data with dnode
, and static pages are not necessary. 只需要与
dnode
交换数据,就不需要静态页面。
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) 失败并出现以下错误:(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 . 无法通过SockJS或Shoe找到方法,所以我切换了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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.