editablejs / editable

🌱 A collaborative rich-text editor framework that focuses on stability, controllability, extensibility, and performance. 一款强到离谱的富文本编辑器框架,专注于稳定性、可控性、扩展性和性能。
https://docs.editablejs.com
Apache License 2.0
1.79k stars 120 forks source link

yjsserver 鉴权影响协同,鉴权方法使用了自定义的方法通过fetch调用第三方平台鉴权,但是发现问题,当有一个用户的时候正常,但是超过一个用户之后协同就会失效,只会有一个编辑器可以使用,另一个编辑器页面无法显示出来,但是ws是已经连接上的,请问这是什么问题,大佬帮忙解答一下😂 #174

Open Jedi1820 opened 4 months ago

Jedi1820 commented 4 months ago

server.on("upgrade", (request, socket, head) => { // You may check auth of request here.. // See https://github.com/websockets/ws#client-authentication const handleAuth = (ws: WebSocket) => { const { auth = () => verifyWssUrl(ws, request) } = SERVER_OPTIONS_WEAKMAP.get(server) ?? {} auth(request, ws).then((res) => { if (!res) { ws.close(1008, undefined) } else { wss.emit("connection", ws, request) } }) } wss.handleUpgrade(request, socket, head, handleAuth) })

const verifyWssUrl = async ( conn: WebSocket.WebSocket, request: http.IncomingMessage ) => { const url = request.url console.log("wss url:" + url)

try { // @ts-ignore 初始化上下文 conn.context = await context.initContext(url) // @ts-ignore console.log(conn.context) } catch (error: any) { console.error("初始化上下文失败", error) return false }

return true }