Node.js 如何确信websocket是安全的

Node.js 如何确信websocket是安全的,node.js,websocket,Node.js,Websocket,这听起来可能是一个荒谬的问题,而且很可能是。 现在我使用,但可能很快会切换到。 因此,这两种实现的答案都是受欢迎的 我在端口8080上打开一个侦听器,等待连接请求。在接受请求后,我希望立即确信连接是安全的(如:使用wss://并拒绝simplews://) 从文档中提取的简单代码是: wsServer.on('request', function(request) { // TODO: produce this single bit SSL_IS_ACTIVE = ?; if (

这听起来可能是一个荒谬的问题,而且很可能是。 现在我使用,但可能很快会切换到。 因此,这两种实现的答案都是受欢迎的

我在端口8080上打开一个侦听器,等待连接请求。在接受请求后,我希望立即确信连接是安全的(如:使用
wss://
并拒绝simple
ws://

从文档中提取的简单代码是:

wsServer.on('request', function(request) {

  // TODO: produce this single bit
  SSL_IS_ACTIVE = ?;

  if (!SSL_IS_ACTIVE) {
    request.reject(); // ws protocol used, I want wss!
    return;
  }

  // ... proceed to process the request (authentication and so on)
}
这听起来可能很简单,但我还没有找到任何关于这方面的文档

我是否必须坚持使用SSL端口(443)或仍然可以选择任何端口,例如使用:

wss://localhost:8080/test
是否有一种方法来测试协议,并且它是否足够,例如:

request.protocol === "wss"
-or-
request.uri.indexOf("wss://") === 0
看起来我遗漏了什么,因为我不可能是唯一有这个问题的人:D


对于这两种实现(WebSocket节点和ws),我们都非常感谢您的帮助

我觉得确保没有不安全的请求的一个简单方法是在构建服务器时甚至不支持不安全的请求。它看起来像是
WebSocket.Node
支持安全服务器。我想
ws
也应该如此。我认为对于这两个项目,应该有一种只绑定到
wss
的方法

WebSocket.Node
中,似乎可以使用以下方法创建TLS服务器:

服务器连接支持TLS(改用https.createServer (http.createServer的名称)

来自文档:

来自

WebSocket协议规范分别为未加密连接和加密连接定义了两个新的URI方案ws:和wss:。除了方案名称和片段(#不受支持),其余URI组件都定义为使用


因此,您可以在websocket URL中指定端口,与在普通web URL中指定端口的方式相同。

can
verifyClient
help,Firefox8+似乎强制规定,如果您的站点是ssl,则只能使用安全websocket。我还没有真正使用WebSocket,但我觉得应该有一种方法可以明确地将您的服务器绑定到wss上,我也会研究一下。考虑到我使用的是nw.js(因此,是CEF的一个特定版本),我认为会有一个与firefox8+相当的行为。这一行完全不在我的视线之内!这正是我想要的。谢谢!我不得不接受另一个答案,因为它指向实际的实现细节。你的答案仍然相关,但我只能接受一个。。。