Websockets和Adafruit Feather OpCode 11

我的目标是将Adafruit Feather(WiFi)连接到计算机上运行的Websocket服务器。

我的问题是,当我重置羽毛时,有时无法重新连接。在重新连接之前,我必须等待几分钟,进行一些额外的重置。打开服务器代码上的调试标志,我看到两种模式:

成功连接


[[:initialize]]

[[:receive_data,"GET /"]]

[[:receive_data," HTTP/1.1"]]

[[:receive_data,"\r\n"]]

[[:receive_data,"Host: "]]

[[:receive_data,"XXX:XXX:XX:XX"]] # masked for security,but the IP of my server

[[:receive_data,"443\r\n"]]

[[:receive_data,"User-Agent"]]

[[:receive_data,": "]]

[[:receive_data,"Arduino/2.2.0"]]

[[:receive_data,"Upgrade"]]

[[:receive_data,"websocket"]]

[[:receive_data,"Connection"]]

[[:receive_data,"Sec-WebSocket-Key"]]

[[:receive_data,"eGHyXdbEMgiCiR0cZEBRTQ=="]]

[[:receive_data,"\r\nSec-WebSocket-Version"]]

[[:receive_data,"13"]]

[[:receive_data,"\r\n\r\n"]]

[[:accepting_ws_version,13]]

[[:upgrade_response,"HTTP/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-accept: rUUq6+3qildLwg2c5CpgHfxTO1I=\r\n\r\n"]]

[[:sending_frame,:text,"{\"sender\":\"socket-server\",\"event\":\"connection_opened\",\"data\":{\"sid\":3,\"ip\":\"129.XXX.XXX.30\"}}"]]

# DEVICE CONNECTION ESTABLISHED
# FIRST MESSAGE FROM FEATHER

[[:receive_data,"\x81"]]

[[:receive_data,"\xB6"]]

[[:buffer_incomplete,"\x81\xB6"]]

[[:receive_data,"\xFC\xDE\xEB\xF1\x87\xFC\x85\x90\x91\xBB\xC9\xCB\xDE\xB0\x8E\x9E\x8C\xB7\x93\x94\x90\xFC\xC7\xD3\x8A\xBB\x99\x82\x95\xB1\x85\xD3\xC6\xFC\xDA\xDF\xCC\xFC\xC7\xD3\x99\xA8\x8E\x9F\x88\xFC\xD1\xD3\x9B\xAC\x8E\x94\x88\xB7\x85\x96\xDE\xA3"]]

[[:message_received,"{\"name\":\"neopixel\",\"version\":\"1.0\",\"event\":\"greeting\"}"]]

# Works great,no issues unless it gets disconnected... 

失败的重新连接

# HIT RESET BUTTON HERE
[[:sending_frame,\"event\":\"connection_closed\",\"data\":{\"sid\":10,\"ip\":\"129.107.106.30\"}}"]]

# ATTEMPTING TO REOPEN
[[:initialize]]

[[:receive_data,"GET"]]

[[:receive_data," "]]

[[:receive_data,"/"]]

[[:receive_data,"XXX.XX.XX.XX"]]

[[:receive_data,":"]]

[[:receive_data,"443"]]

[[:receive_data,": websocket"]]

[[:receive_data,"0rubjGOZYAJM0YZ/cSboWw=="]]

[[:receive_data,"Sec-WebSocket-Version"]]

[[:receive_data,"\r\n"]]

[[:accepting_ws_version,"HTTP/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-accept: QP0lJhfU9wlSy4ZFesYTIVyj/ww=\r\n\r\n"]]

[[:sending_frame,\"data\":{\"sid\":12,\"ip\":\"129.XXX.XXX.30\"}}"]]


[[:receive_data,"{"]]

[[:receive_data,"\"n"]]

[[:buffer_incomplete,"{\"n"]]

[[:receive_data,"a"]]

[[:buffer_incomplete,"{\"na"]]

[[:receive_data,"m"]]

[[:buffer_incomplete,"{\"nam"]]

[[:receive_data,"e"]]

[[:buffer_incomplete,"{\"name"]]

[[:receive_data,"\""]]

[[:buffer_incomplete,"{\"name\""]]

[[:receive_data,":"]]

[[:buffer_incomplete,"{\"name\":"]]

[[:receive_data,"{\"name\":\""]]

[[:receive_data,"n"]]

[[:buffer_incomplete,"{\"name\":\"n"]]

[[:receive_data,"{\"name\":\"ne"]]

[[:receive_data,"o"]]

[[:buffer_incomplete,"{\"name\":\"neo"]]

[[:receive_data,"p"]]

[[:buffer_incomplete,"{\"name\":\"neop"]]

[[:receive_data,"i"]]

[[:buffer_incomplete,"{\"name\":\"neopi"]]

[[:receive_data,"x"]]

[[:buffer_incomplete,"{\"name\":\"neopix"]]

[[:receive_data,"{\"name\":\"neopixe"]]

[[:receive_data,"l\""]]

[[:buffer_incomplete,"{\"name\":\"neopixel\""]]

[[:receive_data,","]]

[[:buffer_incomplete,"]]

[[:receive_data,\""]]

[[:receive_data,"v"]]

[[:buffer_incomplete,\"v"]]

[[:receive_data,\"ve"]]

[[:receive_data,"r"]]

[[:buffer_incomplete,\"ver"]]

[[:receive_data,"s"]]

[[:buffer_incomplete,\"vers"]]

[[:receive_data,\"versi"]]

[[:receive_data,\"versio"]]

[[:receive_data,\"version"]]

[[:receive_data,\"version\""]]

[[:receive_data,\"version\":"]]

[[:receive_data,\"version\":\""]]

[[:receive_data,"1"]]

[[:buffer_incomplete,\"version\":\"1"]]

[[:receive_data,"."]]

[[:buffer_incomplete,\"version\":\"1."]]

[[:receive_data,"0"]]

[[:buffer_incomplete,\"version\":\"1.0"]]

[[:receive_data,\"version\":\"1.0\""]]

[[:receive_data,"\""]]

[[:error,#<EventMachine::WebSocket::WSProtocolError: Unknown opcode 11>]]

[[:sending_frame,:close,"\x03\xEAUnknown opcode 11"]]

[[:receive_data,"e"]]

[[:unbind,:connection]]

# :(

我在while循环中尝试进行Feather重新连接。我以为我的问题可能是与快速重新连接尝试中的数据超时/节流有关,但可惜情况并非如此。

关于如何诊断问题的想法?我将操作码视为潜在的罪魁祸首,但不确定是否要在服务器端抑制它或弄清楚为什么将其放在客户端。

ff136158 回答:Websockets和Adafruit Feather OpCode 11

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1245974.html

大家都在问