-
Notifications
You must be signed in to change notification settings - Fork 4.3k
Open
Description
主要还是RFC标准的问题,Python的Web框架FASTAPI的标准更加严格,不发会导致1002错误,然后收到close。
尝试改了2个地方暂时可以过,测试时的 masking_key = math.random(0, 0xFFFFFFFF)
M.read里面,收到ping后会主动回复pong一下,改起来有些难受。也许有更优雅的改法,下面的改法仅供参考
--- a/skynet/lualib/http/websocket.lua
+++ b/skynet/lualib/http/websocket.lua
@@ -486,7 +486,7 @@ function M.connect(url, header, timeout)
end
-function M.read(id)
+function M.read(id, masking_key)
local ws_obj = assert(ws_pool[id])
local recv_buf
while true do
@@ -495,7 +495,7 @@ function M.read(id)
_close_websocket(ws_obj)
return false, payload_data
elseif op == "ping" then
- write_frame(ws_obj, "pong", payload_data)
+ write_frame(ws_obj, "pong", payload_data, masking_key)
elseif op ~= "pong" then -- op is frame, text binary
if fin and not recv_buf then
return payload_data
@@ -520,9 +520,9 @@ function M.write(id, data, fmt, masking_key)
end
-function M.ping(id)
+function M.ping(id, payload_data, masking_key)
local ws_obj = assert(ws_pool[id])
- write_frame(ws_obj, "ping")
+ write_frame(ws_obj, "ping", payload_data, masking_key)
end
Metadata
Metadata
Assignees
Labels
No labels