我正在使用 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 的协议是否正常,或者标头中是否缺少任何信息?
另外,我想知道'Origin'的值应该是什么?在第一次握手时它是“Arduino”,而在第二次握手时它是“ArduinoSocketIOClient”。