简体   繁体   English

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM