Websocket协议自版本8以来已完全改变。现在来自浏览器的传入消息的格式非常不同,对我来说非常复杂。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-------+-+-------------+-------------------------------+
|F|R|R|R| opcode|M| Payload len | Extended payload length |
|I|S|S|S| (4) |A| (7) | (16/64) |
|N|V|V|V| |S| | (if payload len==126/127) |
| |1|2|3| |K| | |
+-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - +
| Extended payload length continued, if payload len == 127 |
+ - - - - - - - - - - - - - - - +-------------------------------+
| |Masking-key, if MASK set to 1 |
+-------------------------------+-------------------------------+
| Masking-key (continued) | Payload Data |
+-------------------------------- - - - - - - - - - - - - - - - +
: Payload Data continued ... :
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
| Payload Data continued ... |
+---------------------------------------------------------------+
以下是我从http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17发现的内容
有人知道如何用c ++或c#实现服务器端读取吗?或者你有一个已经有效的例子的链接?
我知道这台服务器是正确的,但我需要一个代码:http://websocket.org/echo.html
答案 0 :(得分:3)
这里有一个很棒的C ++ WebSocket库,它支持hybi-17(最新版本),它只有头文件,只使用boost。它附带示例代码和文档: http://vinniefalco.github.io/
这是一个向echo服务器发送消息的完整程序:
{{1}}
答案 1 :(得分:1)
我写了C++ server。有关如何阅读hybi-17消息,请参阅WsProtocol80::Read()
。请注意,服务器使用自定义字符串和套接字类,因此重用是非常重要的,但您应该能够轻松地跟踪正在读取/写入的数据。
随时询问有关代码特定部分的任何问题。
此wiki post也可能会引起关注。