WebSocket服务器:发送文本框到客户端

WebSocket服务器:发送文本框到客户端

问题描述:

我正在从服务器发送自定义web套接字框到客户端。我设法无缝地握手,但发送正常的文本框架导致我的问题(客户端的消息没有收到)。这是我发送的:WebSocket服务器:发送文本框到客户端

​​

数据发送正确(握手工作,jj的值为6)。我根据我的代码How can I send and receive WebSocket messages on the server side?找到了解释。

我的客户是很简单,我只是张贴完成:为什么握手工作和普通的文本没有按”

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <title>Web Socket Example</title> 
    <meta charset="UTF-8"> 
    <script type="text/javascript"> 

     var webSocket = new WebSocket("ws://localhost:48884/", "sample"); 
     webSocket.binaryType = "arraybuffer"; 
     webSocket.onopen = function(e) { alert("opened"); } 
     webSocket.onclose = function(e) { alert("closed"); } 
     webSocket.onerror = function(e) { alert("error"); } 
     webSocket.onmessage = function(e) { alert("got: " + e.data); } 

    </script> 
    </head> 
    <body> 
     <div id="holder" style="width:600px; height:300px"></div> 
    </body> 
</html> 

的web套接字版本我从客户得到的是13

任何想法T'

+0

工作你使用哪种语言的服务器,你希望以什么语言得到答案?你怎么知道握手的工作?你到目前为止尝试了什么? – Myst

+0

我想握手工作,因为当我运行客户端时,我得到了警报(“打开”)。 我使用C++,但这是无关紧要的。 – maxest

+0

后续行动。我只是在Internet Explorer(以前使用Firefox)上检查过这个。在IE我打开,但然后立即出现错误(未定义),并关闭。 – maxest

我解决了这个问题。它现在可以工作,因为在握手结束时需要额外的\ r \ n(https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers)。所以我的握手是不正确的,但Firefox以某种方式接受它(但不接受消息)。

无论如何,我上面贴的链接说,握手格式应该是:

HTTP/1.1 101 Switching Protocols 
Upgrade: websocket 
Connection: Upgrade 
Sec-WebSocket-Accept: key 
empty line 

我遵守这个格式,然后这一切在Firefox和IE浏览器能正常工作,但并没有在Chrome。我发现,要让它在Chrome上工作,我还需要指定的协议:上述

HTTP/1.1 101 Switching Protocols 
Upgrade: websocket 
Connection: Upgrade 
Sec-WebSocket-Accept: key 
Sec-WebSocket-Protocol: my_protocol_name 
empty line 

握手格式让我握手,服务器到浏览器的消息发送在Firefox,IE和Chrome