【问题标题】:Testing if client can connect to WebSockets with port 80, 443, 843测试客户端是否可以使用端口 80、443、843 连接到 WebSocket
【发布时间】:2014-03-30 14:14:22
【问题描述】:

我正在节点服务器上运行 WebSockets 应用程序。一切正常,除了我的应用程序在学校中使用,并且他们的一些防火墙显然阻止了端口 80 上的 WebSockets。我读到像 843 这样的端口通常是畅通的,但我想在进行任何切换之前对此进行测试。

如何测试开放的 WebSockets 端口?例如从客户端尝试端口 80、443 和 843 并报告​​哪些有效?任何教程或代码 sn-ps 都会很棒...

【问题讨论】:

  • 一种解决方案是跟踪客户端尝试连接的端口,如果发生错误则切换端口并尝试另一个端口,您使用什么模块?
  • 我已经准备好使用任何模块了,只是想将其作为实验运行几天/几周并获取数据。我实际上正在寻找类似的教程或代码 sn-p。
  • 为了最大限度地提高 WebSocket 成功的机会,我建议在标准端口 443 上使用安全 WebSocket (TLS),并使用浏览器可以接受且无需任何用户交互的有效服务器证书。你可以在学校的一台电脑上尝试demo.crossbar.io ..
  • @oberstet 感谢您的建议,我将在 443 上尝试使用证书。不幸的是,我无法进入这些学校,它们在不同的国家。这就是为什么我需要在部署之前对其进行测试,否则它可能会影响现有用户。
  • 使用socket.io怎么样?它处理了很多这类事情,并且被广泛使用。

标签: node.js websocket firewall


【解决方案1】:

我一直在使用 http://websocketstest.com/ 来查看我的 socket.io websockets 的阻塞情况。我刚才也遇到了一个场景,客户端有防火墙阻止端口 80 上的流量。我现在没有坚持让他们跳过箍,而是在 443 上监听,没有必要为此在该端口上使用 SSL。

在 nginx 中,我首先将所有流量重定向到 socket.test.com 端口 80 到端口 443,因此:

server {
    listen              80;
    server_name             socket.test.com;
    rewrite             ^ http://test.com:443$request_uri?;
 }

然后

server {
    listen 443;
    server_name  socket.test.com

    location / {
        proxy_pass http://127.0.0.1:3004;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}

在端口 3004 上,socket.io 服务器正在接受连接。有效!

2018 年更新:感谢letsencrypt.com,现在添加https 证书很简单,因此所有这些都可以通过443 上的加密来完成

【讨论】:

  • 谢谢,这有帮助,并且该应用程序适用于大多数用户。但仍有一些它仍然被阻止。
  • 你检查调试日志了吗?如果你知道是什么,请告诉我我正在开发一个应用程序,我希望它适用于 >99% 的移动浏览器。
猜你喜欢
  • 2013-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
  • 1970-01-01
  • 2014-04-17
相关资源
最近更新 更多