这听起来像是一个荒谬的问题,也许确实如此。 现在我使用 WebSocket-Node但可以切换到 ws很快。 因此,欢迎为这两种实现提供答案。
我在端口 8080 上打开一个监听器并等待连接请求。接受请求后,我想立即确信连接是安全的(如:使用 wss://
并拒绝简单的 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
有没有办法测试协议(protocol)并且它是否足够,e.G.沿线的东西:
request.protocol === "wss"
-or-
request.uri.indexOf("wss://") === 0
看起来我遗漏了什么,因为我不可能是唯一遇到这个问题的人 :D
对于这两种实现(WebSocket-Node 和 ws),我们将不胜感激!
最佳答案
我觉得确保不发出不安全请求的一种直接方法是在构建服务器时甚至不支持不安全请求。看起来 WebSocket.Node
支持安全服务器。我想 ws
也应该如此。我认为应该有一种方法可以只为两个项目绑定(bind)到 wss
。
从 WebSocket.Node
看来您可以使用以下方法创建 TLS 服务器:
TLS supported for server connections (use https.createServer instead of http.createServer)
关于node.js - 如何确信 websocket 是安全的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31563986/