Avatar
omochimetaru 5/15/2019 2:07 PM
Swordのswift-nio実装が結構壊れている
2:07 PM
WebSocket接続のネゴシエーションって、HTTPRequest/Responseの形で行われるが、
2:08 PM
サーバがHTTPResponseを返して、それ以降のストリームはWebSocketストリームなんだけど、
2:09 PM
HTTPResponseを受け取ってから、 WebSocketClientUpgradeHandlerをチャンネルハンドラから取り除いて、 新しくWebSocketHandlerを取り付ける、って処理が、
2:09 PM
nio/EventLoopFutureの非同期処理チェーンで実装されていて、
2:09 PM
ハンドラのつけ外しが完了する前に、サーバからWebSocketストリームがもう届いてしまっていて、
2:10 PM
タイミングが間に合ってなくてWebSocketストリームを喪失してしまう。