【发布时间】:2014-05-28 06:00:27
【问题描述】:
我正在使用 socket.io 将 CC3000 连接到 node.js 服务器。我使用以下库创建了一个 websocket https://github.com/chadstachowicz/socket_io_arduino_cc3000
在 SocketIOClient.cpp 中,它创建一个 TCP 连接,获取一个 session-id(sid)。它断开并创建另一个 TCP 连接,并使用 sid 将连接升级到 websocket。为此,客户端(此处为 CC3000)发送以下标头信息:
client.print(F("GET /socket.io/1/websocket/"));
client.print(sid);
client.println(F(" HTTP/1.1"));
client.print(F("Host: "));
client.println(hostname);
client.println(F("Origin: ArduinoSocketIOClient"));
client.println(F("Upgrade: WebSocket")); // must be camelcase ?!
client.println(F("Connection: Upgrade\r\n"));
在此请求之后,客户端等待来自服务器的 HTTP 101 响应。但是服务器没有发送任何响应。它记录为警告“websocket 连接无效”并结束连接。
创建 websocket 的协议是否正常,或者 header 中是否缺少任何信息?
另外,我想知道 'Origin' 的值应该是多少?第一次握手时是“Arduino”,而第二次握手时是“ArduinoSocketIOClient”。
【问题讨论】:
标签: websocket socket.io arduino websocket++