Websocket无法访问本地网络客户端服务
本文关键字:客户端 服务 本地网络 访问 Websocket | 更新日期: 2023-09-27 18:17:15
本地网络中websocket连接出现问题。
场景:
对于我的笔记本电脑(Win7),我写了一个打开websocket-server端口2014的服务。因为websockets在windows 7中默认不启用,所以我使用supersocket库(http://www.supersocket.net/)。
对于客户端,我写了一个android应用程序与sencha touch和Phonegap。为了使websocket-支持android设备的版本低于4.4,我已经集成了phonegap的websocket- plugin。
原因是在android设备和笔记本电脑之间打开一个websocket连接,通过android应用程序控制笔记本电脑。这两个设备都是同一个本地网络的成员。
问题:
在安装了两个应用程序(windows服务和android应用程序)之后,我试图将我的android设备与笔记本电脑的服务连接起来。第一步是在客户端打开连接:
var connection = new WebSocket('ws://192.168.178.21:2014');
但是在我的windows服务的事件日志中没有记录成功的连接。
之后,我打开笔记本电脑的浏览器并测试了相同的代码-成功。客户端和服务端可以互相通信
所以我已经在我的android设备上测试了websocket支持:将websocket-url更改为var connection = new WebSocket('ws://echo.websocket.org');
和可以连接到服务器-> Android websockets是可以的。
第三步是禁用防火墙并检查与Wireshark的连接:
截图:http://www.directupload.net/file/d/3710/y9t79npy_png.htm
192.168.178.21 ->笔记本IP
192.168.178.23 -> Android设备IP
所以看起来数据包到达了我的笔记本电脑,但没有到达服务。附加尝试使用安全wss://协议-失败。
别再胡思乱想了。如果能得到一些帮助,我将非常高兴。所以看起来数据包到达了我的笔记本电脑,但没有到达服务。
可能是服务器绑定到特定的IP地址或主机名?通常,服务器将隐式绑定到所有接口,例如0.0.0.0,但有时它们绑定到一个特定的接口。如果发生这种情况,那么您需要连接到相同的接口。
你说你的客户端正在连接到ws://192.168.178.21:2014,但它可能是服务器绑定到127.0.0.1或本地主机或你的主机名,因此没有看到请求?这可以解释为什么笔记本电脑收到了请求,而不是你的服务。
然后,你又说你在本地浏览器上试过了,而且成功了。您是否使用了相同的IP地址,还是使用了127.0.0.1或localhost?假设您使用相同的IP地址192.168.178.21,那么这将表明它不是我描述的绑定问题。
对不起,我现在只能想到这么多
一段时间后,我找到了解决方案:
必须将防火墙规则添加到公共防火墙选项中。
谢谢你的帮助