More Related Content
Similar to Non blocking and asynchronous (20)
Non blocking and asynchronous
- 2. 自己紹介 小保田 規生(こぼた のりお)と申します幼少のころから、こくぼくん、くぼたくんと呼ばれるのがデフォルトになってます Lighttpd用のwebsocket module作ってます# 最近リファクタリング、メンテや更新出来てなくてごめんなさい https://github.com/nori0428/mod_websocket 本業は組み込みや、ネットワーク周りのソフトウェアエンジニアですが、最近はJavaScriptも書いてます
- 14. C10K problem サーバ1台に対して、クライアントが1万台繋がったらどうなる?と言う問題 The C10Kproblem 解決方法(The C10K problemの中で記述されています) 各スレッドが複数のクライアントを受け付けるノンブロッキングI/Oとレベルトリガ型通知※1を利用する 各スレッドが複数のクライアントを受け付けるノンブロッキングI/Oとエッジトリガ型通知※1を利用する 各スレッドが複数のクライアントを受け付けるAIOを利用する 各スレッドが1つのクライアントを受け付けるブロッキングI/Oを利用する サーバコードをカーネルに組み込む ※1:http://d.hatena.ne.jp/kazuhooku/20080707/1215385159 Node.js 入門 page.15
- 15. WebSocket Server実装 Apache - pywebsocket 解決方法4番各スレッドが1つのクライアントを受け付けるブロッキングI/Oを利用する Node.js他、殆どのWebSocketServer実装 解決方法3番各スレッドが複数のクライアントを受け付けるAIO(相当するlibev + libeioなど)を利用する
- 23. mod_websocket for lighttpd WebSocket Proxyでは無い WebSocket とTCP Socketを繋ぐReverse Proxyぽい実装 lighttpd Application browsers WebSocket Internet TCP Socket TCP Socket WebSocket
- 24. Pros, Cons Pros 外部に公開するポートはLighttpdで利用するポートだけ サーバサイドアプリケーションを作成すること無く、既存TCPサーバと通信が可能 Cons サーバサイドアプリケーションが作りづらい version-07には対応してません mod_websocketの出来が悪い・・・いや、ほんとにごめんなさい
- 25. 地味なデモ(for chrome, safari, firefox 4.x) https://onmessage.ws/demos/ws-smtp.html JavaScript lighttpd postfix Browsers WebSocket(wss scheme) new WebSocket connect TCP Socket send SMTPTerminal onmessage disconnect onclose
- 26. JavaScriptと、lighttpdのconfig fileだけで実現 デモの特徴 websocket.server = (“/smtp” => ( “host” => “127.0.0.1”, “port” => 25, “origins” => (“onmessage.ws”)) browser Any Client lighttpd.conf mod_websocket for Lighttpd Local Area※1 Internet lighttpd postfix ※1: デモではローカルループバックです