Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Websocket:onmessage不被调用,但仅在Windows上被调用_Javascript_Windows_Websocket - Fatal编程技术网

Javascript Websocket:onmessage不被调用,但仅在Windows上被调用

Javascript Websocket:onmessage不被调用,但仅在Windows上被调用,javascript,windows,websocket,Javascript,Windows,Websocket,我们与Windows客户端的Websocket通信有问题。 作为最小设置,我们使用python3 autobahn websocket乒乓球示例 服务器来自(从中获取)。唯一的修改是服务器在连接打开时向客户端发送消息 客户机也采用了autobahn乒乓球示例,但有两种修改方式。它接受来自远程服务器的连接,不向服务器发送消息,但需要发送消息 这在我的Linux机器上的所有浏览器上都能很好地工作,但在Windows客户机上不起作用。但是,如果我在连接打开后立即从客户机发送消息,那么客户机也能够接收消

我们与Windows客户端的Websocket通信有问题。 作为最小设置,我们使用python3 autobahn websocket乒乓球示例

服务器来自(从中获取)。唯一的修改是服务器在连接打开时向客户端发送消息

客户机也采用了autobahn乒乓球示例,但有两种修改方式。它接受来自远程服务器的连接,不向服务器发送消息,但需要发送消息

这在我的Linux机器上的所有浏览器上都能很好地工作,但在Windows客户机上不起作用。但是,如果我在连接打开后立即从客户机发送消息,那么客户机也能够接收消息

这是pyhton3服务器:

从autobahn.asyncio.websocket导入WebSocketServerProtocol\
WebSocketServerFactory
类MyServerProtocol(WebSocketServerProtocol):
def onConnect(自身,要求uest):
打印(“客户端连接:{0}”。格式(request.peer))
def onOpen(自我):
打印(“WebSocket连接打开”)
self.sendMessage('server hello'.encode('utf8'))
def onMessage(self、payload、isBinary):
如果是二进制的:
打印(“接收到的二进制消息:{0}字节”。格式(len(有效负载)))
其他:
打印(“收到的文本消息:{0}”。格式(payload.decode('utf8'))
#逐字回显信息
self.sendMessage(有效负载,isBinary)
def onClose(自身、wasClean、代码、原因):
打印(“WebSocket连接已关闭:{0}”。格式(原因))
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
导入异步
factory=WebSocketServerFactory(u“ws://0.0.0.0:9000”,debug=False)
factory.protocol=myserver协议
loop=asyncio.get\u event\u loop()
coro=loop.create_服务器(工厂'0.0.0',9000)
服务器=循环。运行直到完成(coro)
尝试:
loop.run_forever()
除键盘中断外:
通过
最后:
server.close()
loop.close()
以下是Websocket客户端:


var-socket=null;
var-isopen=false;
window.onload=函数(){
套接字=新的WebSocket(“ws://“+location.hostname+”:9000”);
socket.onopen=函数(){
console.log(“已连接!”);
isopen=真;
//如果我这样做,它就会起作用
//socket.send('hello from client'.encode('utf-8'))
}
socket.onmessage=函数(e){
console.log(“收到短信:+e.data”);
}
socket.onclose=函数(e){
日志(“连接关闭”);
socket=null;
isopen=假;
}
};

奇怪的问题。我在Windows7上尝试了node.js websocket服务器和python websocket服务器。连接打开后,服务器立即发送“hello”。在某些端口,客户端会收到消息,而在其他端口则不会(在服务器上不考虑node.js或python)。啊,我不能再编辑我的评论了。接下来:我检查了与wireshark的通信。在超文本传输协议中,所有消息都是相同的,除了HTTP Get消息中的“X-FCCKV2”头外,从客户端获取带有“Upgrade:websocket”的消息。我还没有发现,X-FCCKV2头是做什么的,为什么它是从客户端添加的(所有浏览器:chrome、firefox、ie)。奇怪的问题。我在Windows7上尝试了node.js websocket服务器和python websocket服务器。连接打开后,服务器立即发送“hello”。在某些端口,客户端会收到消息,而在其他端口则不会(在服务器上不考虑node.js或python)。啊,我不能再编辑我的评论了。接下来:我检查了与wireshark的通信。在超文本传输协议中,所有消息都是相同的,除了HTTP Get消息中的“X-FCCKV2”头外,从客户端获取带有“Upgrade:websocket”的消息。我还没有发现,X-FCCKV2头是做什么的,为什么它是从客户端添加的(在所有浏览器:chrome,firefox,ie)。