Websocket hybi-17新数据格式c ++

时间:2011-12-06 21:32:04

标签: c++ websocket

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

2 个答案:

答案 0 :(得分:3)

这里有一个很棒的C ++ WebSocket库,它支持hybi-17(最新版本),它只有头文件,只使用boost。它附带示例代码和文档: http://vinniefalco.github.io/

这是一个向echo服务器发送消息的完整程序:

{{1}}

答案 1 :(得分:1)

我写了C++ server。有关如何阅读hybi-17消息,请参阅WsProtocol80::Read()。请注意,服务器使用自定义字符串和套接字类,因此重用是非常重要的,但您应该能够轻松地跟踪正在读取/写入的数据。

随时询问有关代码特定部分的任何问题。

wiki post也可能会引起关注。