如果这个问题太长,请原谅我.我正在开发一种物联网设备,它通过WebSockets与网站交谈.我的物联网设备现在支持使用套接字的TCP通信. 在转到IOT设备中的WebSockets之前,我想在我的覆盆子pi 4上try WebSockets.所以我做了一个简单的设置,在render.com上运行了一个wesocket服务器,我的链接格式如下:
<wss://web-socket-xxx.onrender.com>
我在raspberry pi上使用了以下Python脚本连接到Web服务器:
import websockets
import asyncio
async def ws_client():
print("WebSocket: Client Connection Initiated.")
url = "wss://web-socket-9wz7.onrender.com"
# Connect to the server
async with websockets.connect(url) as ws:
print(ws.remote_address)
print(ws.path)
print("request headers")
print(ws.request_headers)
print("response headers")
print(ws.response_headers)
print(ws.subprotocol)
name = input("Your Name (type 'exit' to quit): ")
if name == 'exit':
exit()
age = input("Your Age: ")
# Send values to the server
await ws.send(f"{name}")
await ws.send(f"{age}")
# Stay alive forever, listen to incoming msgs
while True:
msg = await ws.recv()
print(msg)
# Start the connection
asyncio.run(ws_client())
上面的脚本运行得非常好.WebSocket通信不会出现任何问题.
因为我不能在我的物联网设备上使用Python代码,所以我开始研究任何我可以在Raspberry pi上编译的WebSocket的开源C实现.为此,我 Select 了以下GitHub回购
https://github.com/jeremyhahn/cwebsocket
我在树莓pi上基于上面的repo编写了WebSocket客户端,并try 连接到WebSocket服务器.我遇到了以下错误:
cwebsocket: starting cwebsocket client
cwebsocket: cwebsocket_client_init: stack limit min=8388608, max=-1
cwebsocket: cwebsocket_client_connect: hostname=web-socket-xxxx.onrender.com, port=443, resource=/, querystring=, secure=1
cwebsocket: cwebsocket_client_connect: using secure (SSL) connection
4159651904:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:../ssl/record/rec_layer_s3.c:1562:SSL alert number 40
cwebsocket: exiting cwebsocket
我判断了与本地WebSocket服务器相同的WebSocket客户端,它工作正常,但每次try 连接到render.com上的远程WebSocket服务器时,我都会遇到相同的错误. 谁能告诉我远程WebSocket服务器出了什么问题?