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'
答
我解决了这个问题。它现在可以工作,因为在握手结束时需要额外的\ 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
工作你使用哪种语言的服务器,你希望以什么语言得到答案?你怎么知道握手的工作?你到目前为止尝试了什么? – Myst
我想握手工作,因为当我运行客户端时,我得到了警报(“打开”)。 我使用C++,但这是无关紧要的。 – maxest
后续行动。我只是在Internet Explorer(以前使用Firefox)上检查过这个。在IE我打开,但然后立即出现错误(未定义),并关闭。 – maxest