2013-12-23 50 views
0

有谁知道如何创建sockjs-node(SockJS - WebSocket仿真)或Shoe独立服务器?如何创建sockjs(SockJS - WebSocket仿真)或Shoe独立服务器(node.js)?

是否有可能没有http服务器打包?

只需要与dnode交换数据,并且不需要静态页面。

举例来说,当我做节点服务器端:

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' 
    }); 

下面的代码(客户端)

var d = dnode() 
    .on('remote', function(remote) 
    { 
     remote.test(); 
    }); 

d 
    .pipe(shoe('http://localhost/dnode')) 
    .pipe(d); 

,出现以下错误失败:(铬)

GET http://localhost/dnode/info app.bundle.js:14681 
AbstractXHRObject._start app.bundle.js:14681 
(anonymous function) 

回答

0

找不到SockJS或Shoe的方法,所以我换了websocket-stream

这里有一个工作代码:

节点服务器

'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); 
    }); 

浏览器客户端

'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); 
相关问题