【问题标题】:How to create sockjs (SockJS - WebSocket emulation) or Shoe standalone server (node.js)?如何创建 sockjs(SockJS - WebSocket 仿真)或 Shoe 独立服务器(node.js)?
【发布时间】:2023-04-06 21:06:01
【问题描述】:

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

没有http服务器可以crate吗?

只需要和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);

失败并出现以下错误:(Chrome)

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

【问题讨论】:

    标签: node.js sockjs dnode


    【解决方案1】:

    找不到使用 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-03
      • 1970-01-01
      • 2015-07-24
      • 2017-11-20
      • 2014-03-10
      相关资源
      最近更新 更多