如何告诉 websocket 服务器接受传入的连接?

Posted

技术标签:

【中文标题】如何告诉 websocket 服务器接受传入的连接?【英文标题】:How to tell websocket server to accept incoming connections? 【发布时间】:2011-08-16 10:11:38 【问题描述】:

我已经开始使用http://code.google.com/p/phpwebsocket/ 中的 websocket php 示例,它在 localhost 上运行良好,但不幸的是,除了 localhost 之外,没有其他客户端可以连接到 websocket 服务器。每当我将路径更改为http://10.27.50.25:8787/client.html 之类的东西时,它都不会让客户端连接。有人对如何修复它有任何想法/示例吗?

提前致谢

【问题讨论】:

@Sheepy 是对的,这可能是防火墙问题,但也值得尝试将(int) 0 作为绑定到服务器端监听套接字的地址 - 这绑定到所有可用的接口。 PS。我知道 PHP 手册说您应该传入 '0.0.0.0' 来执行此操作,但这并不总是适用于 win32。传入0 似乎在我尝试过的任何地方都有效 我已将地址设置为 0,但同样没有变化。 【参考方案1】:

可能是跨域问题。现代浏览器阻止访问除页面加载的主机之外的主机。您可以通过提供 JSON 作为输出然后使用 jQuery Ajax JSON 解析来绕过它。

【讨论】:

是的。如果不是防火墙问题,并且测试是从本地进行的,那么问题很可能是跨域配置。然而,使用 AJAX 作为解决方法不仅没有达到 websocket 的目的,而且还浪费了 websocket 的内置跨域设计。

以上是关于如何告诉 websocket 服务器接受传入的连接?的主要内容,如果未能解决你的问题,请参考以下文章

WebSocket 服务器如何处理多个传入的连接请求?

是否可以获取传入 websocket 连接的 IP 地址?

C# HttpListener Prefixes 不接受 `ws` 阻止 JS WebSocket 连接

如何使用WebSocket

python websockets,如何设置连接超时

接受用于安全 websocket 连接的服务器证书