タグ

WebSocketに関するrryuのブックマーク (3)

  • WebSocketsでの送信処理に関する注意点(CLOSINGステートとcloseイベントに関する疑問) - kazuhoのメモ置き場

    WebSocketsの接続状態には、CONNECTING / OPEN / CLOSING / CLOSEDのステートが定められている。 一方、CLOSING状態への遷移に対応するイベントは存在せず、CLOSE状態へ遷移した際にcloseイベントが発生するとされている。 つまり、「closeイベントが来るまでは送信できるぜー」ってなコードを書いてると、正常系なのにsend()で例外発生する可能性がある。 なので、面倒だけど、 if (ws.readyState == 1) { ws.send(...); }のようなガードを入れる必要がある*1。もしくは、ws.readyState == CLOSING 状態になったらcloseイベントのハンドラを呼び出すようなラッパーを書く必要がある。 と、以上の結論に至ったんですが、あってますでしょうか? >識者 以下、規格からの引用。 CONNECTI

    WebSocketsでの送信処理に関する注意点(CLOSINGステートとcloseイベントに関する疑問) - kazuhoのメモ置き場
    rryu
    rryu 2014/02/21
    全二重なのだから相手がcloseしただけならまだsendできるはずだし、自分がcloseしたならsendするなというだけな感じが。
  • WebSocket(RFC 6455)上で使用するプロトコル設計についての備忘録 - kazuhoのメモ置き場

    一般論として、全二重の通信プロトコルを実装するにあたっては、いくつか注意すべき点があって、具体的には、到達確認と切断シーケンスについて定めておかないと、送達されたはずのメッセージがロストしていたり、切断タイミングによってエラーが発生*1したりする。 具体例をあげると、たとえばTCP/IPにおいてshutdown(2)を用いずに、いきなりclose(2)を呼んでいると、read(2)やwrite(2)がエラー(ECONNRESET)を返す場合がある。 翻って、WebSocket (RFC6455)の場合はどうなってるか? だいたい以下のような感じっぽい。 ws.close()が呼び出されるとWebSocketをCLOSING状態に変更し、Closeフレームを送信する ws.onmessageはWebCosketがCLOSING状態にある間も呼ばれるかもしれない*2 相手からCloseフレーム

    WebSocket(RFC 6455)上で使用するプロトコル設計についての備忘録 - kazuhoのメモ置き場
    rryu
    rryu 2014/01/29
    上下のストリームを別々に切断するのはWebSocketレベルで実装されていないとできないが、TCPレベル以上の到達確認は確認単位がプロトコルごとに異なるから自分で実装しろということなのだろう。
  • New community features for Google Chat and an update on Currents

    Join the official community for Google Workspace administrators In the Google Cloud Community, connect with Googlers and other Google Workspace admins like yourself. Participate in product discussions, check out the Community Articles, and learn tips and tricks that will make your work and life easier. Be the first to know what's happening with Google Workspace. ______________ Learn about more Goo

    New community features for Google Chat and an update on Currents
    rryu
    rryu 2012/12/17
    WebSocketは誕生した瞬間からめんどうくさいセキュリティになっているなあ。
  • 1