【问题标题】:How to set secure websocket connection using websocket-server and node.js如何使用 websocket-server 和 node.js 设置安全的 websocket 连接
【发布时间】:2011-08-29 22:48:25
【问题描述】:

我无法使用 websocket-server 和 node.js 设置安全的 websocket 连接

服务器端

var options = {
    key: fs.readFileSync(PRIVATE_KEY),
    cert: fs.readFileSync(CERTIFICATE)
};

// create web server
var server = ws.createServer(options);
server.listen(8000);
...

客户端

<script language="javascript" type="text/javascript">
    var wsUri = "wss://url:8000";


    function init() {            
        websocket = new WebSocket(wsUri);
    }

    ...

    window.addEventListener("load", init, false);
</script>

但它适用于 ws

var wsUri = "ws://url:8000";

有什么想法吗?

【问题讨论】:

  • 您使用的是哪个浏览器?不同的浏览器支持不同版本的 WebSocket 规范,只有 Chrome 14 和 Firefox 7 支持最新的 WS 规范草案 8。另外,您如何处理“握手”以建立与 WebSocket 的连接?
  • 我正在使用 google chrome (v. 15) 对于握手,我使用自签名证书。我尝试了普通的 https 服务器内置 nodejs,它适用于这个证书,我的意思是 url:port。但是 websocket-server 包中的 websockets 实现有问题。
  • 我的意思是你用什么 node.js 包来处理 WebSockets?还是您正在推出自己的解决方案?你试过 Worlize/WebSocket-Node github.com/Worlize/WebSocket-Node 吗?编辑:刚刚注意到你提到了一个叫做“websocket-server”的东西,这是 node.js 的包吗?你能提供一个链接吗?
  • 这里是链接github.com/miksago/node-websocket-server是的,它是nodejs包。

标签: node.js websocket wss


【解决方案1】:

来自websocket-server的自述文件:

这是 WebSocket 协议的服务器。它目前可以工作 协议规范的draft75和draft76。

Chrome v15 不再使用 Draft75/draft76。它使用 WebSocket 规范的最新版本 8,并且与旧草案不兼容(握手机制和数据发送方式都已更改)。这可能是你的问题。

尝试使用支持较新 WebSocket 规范的 node.js 包,我推荐Worlize/WebSocket-Node 或者您可以尝试socket.io

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 2015-05-25
    • 2014-04-30
    • 2012-07-30
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    相关资源
    最近更新 更多