【问题标题】:NodeJS connect to wss on another serverNodeJS 连接到另一台服务器上的 wss
【发布时间】:2013-10-17 21:40:25
【问题描述】:

我想连接的另一台服务器上有一个 wss。假设它的地址是:wss://123.123.123.12:8843

我有一个 nodejs/expressjs 应用程序。如何使用 socket.io 连接到它?我知道如何为服务器/客户端设置实现 socket.io,但我该如何为两台服务器(其中一台我无权访问)执行此操作。

如何设置我的 expressjs 应用程序以连接到 wss?有没有使用 socket.io 的方法,还是我需要另一种方法?

【问题讨论】:

    标签: node.js express websocket socket.io


    【解决方案1】:

    Socket.IO 不是 WebSocket。它是一个支持 WebSockets 的传输系统,但如果你想与其他 WebSockets 交互,你最好使用 Socket.IO 内部使用的ws 模块。它是这样使用的:

    var WebSocket = require('ws');
    var ws = new WebSocket('ws://www.host.com/path');
    ws.on('open', function() {
        ws.send('something');
    });
    ws.on('message', function(data, flags) {
        // flags.binary will be set if a binary data is received
        // flags.masked will be set if the data was masked
    });
    

    如果您实际上只是想与另一个 Socket.IO 服务器通信,则在服务器上安装客户端。它的使用方式与浏览器客户端的使用方式相同。

    npm install socket.io-client
    

    然后用法:

    var socket = require('socket.io')('http://host/path');
    socket.on('connect', function() {
      socket.on('event', function(data) { });
      socket.on('disconnect', function() { });
    });
    

    【讨论】:

    • 很高兴知道。在尝试了 einaros 的 ws (github.com/einaros/ws) 之后,我不断收到错误 SELF_SIGNED_CERT_IN_CHAIN。我正在尝试在 Mac 上运行它。
    • 你使用的是什么版本的 Node.js?
    • 我使用的是 0.10.20 版本。
    • Node.js v0.10+ 自动配置为拒绝自签名的 SSL 证书。要解决此问题,请将环境变量 NODE_TLS_REJECT_UNAUTHORIZED 设置为 0
    • 如果 websocket 服务器没有正确响应“ws”npm 模块,我们如何处理错误。这正在停止我的服务器。错误就像“uncaughtException connect ECONNREFUSED”
    猜你喜欢
    • 2023-03-23
    • 2016-09-02
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    相关资源
    最近更新 更多