Javascript 计算机拒绝websocket连接

Javascript 计算机拒绝websocket连接,javascript,python,websocket,Javascript,Python,Websocket,我目前正在测试一个非常基本的套接字示例,即使是基本测试也不起作用。我的Python代码(服务器)是: 我的Javascript代码(客户端)是: var连接=新的WebSocket(“wss://:5000”); 但是,在启动Python代码并运行Javascript代码后,连接将挂起在WebSocket上。连接状态在给出错误之前大约半分钟: WebSocket连接到'wss://192.168.0.119:5000/'失败:WebSocket打开握手超时 我还尝试用我的公共IP(根据ipin

我目前正在测试一个非常基本的套接字示例,即使是基本测试也不起作用。我的Python代码(服务器)是:

我的Javascript代码(客户端)是:

var连接=新的WebSocket(“wss://:5000”);
但是,在启动Python代码并运行Javascript代码后,连接将挂起在
WebSocket上。连接状态在给出错误之前大约半分钟:

WebSocket连接到'wss://192.168.0.119:5000/'失败:WebSocket打开握手超时

我还尝试用我的公共IP(根据ipinfo.io/IP)替换
,但出现了不同的错误:

WebSocket连接到'wss://216.58.126.4:5000/'失败:建立连接时出错:net::ERR_connection_拒绝


我在互联网上看过,所有的例子的结构都与我的测试代码完全相同,那么为什么它不起作用呢?

我不确定你问题的第一部分。但是,对于第二部分,您需要通过路由器配置端口转发

如果您不熟悉,它基本上会告诉路由器向端口X发送任何请求到端口Y上的某个本地IP(X和Y通常相同)。当然,你需要一个静态的本地IP,否则你必须使路由器与计算机的动态IP保持同步


有关端口转发的更多信息,请参阅关于超级用户。

webSocket连接不是普通TCP连接。要接收传入的webSocket连接,您需要webSocket服务器,而不是普通的TCP服务器

您需要一个支持webSocket连接协议(所有连接都以HTTP连接开始)、webSocket安全交换和webSocket数据帧格式的服务器

使用现有的普通TCP服务器,可以建立底层TCP套接字连接,但在发送webSocket协议的第一阶段后,客户端正在等待服务器的第一个响应,而您没有发送该响应。等待一段时间后,客户端断开连接,因为它的初始webSocket握手失败

因此,在python中,您要么需要获得一个已经支持webSocket服务器的库,要么需要自己实现完整的webSocket协议

您可以在下面的描述中看到webSocket连接是如何工作的


这可能也很有用:

可能这就是为什么在第一部分中,
websocket
需要与HTTP兼容的握手,但您的服务器无法提供此握手。简而言之,套接字连接已经建立,但是
websocket
连接还没有建立。仅端口转发并不总是足够的-从LAN内连接到公共IP不会使用端口转发,除非路由器能够进行NAT环回(并且该转发规则已启用)@JaromandaX我从来没有遇到过环回问题,当然我也没有为此配置任何东西。这完全取决于路由器。是的,端口转发解决了我的问题,谢谢!它还让我能够正确地设置我原本想要做的事情,所以很高兴。
import socket
server = socket.socket(socket.AF_INET)
server.bind(("0.0.0.0", 5000))
server.listen(1)
conn, addr = server.accept()
var connection = new WebSocket("wss://<my-local-ip>:5000");