タグ

websocketに関するmfhamのブックマーク (20)

  • 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のメモ置き場
  • 効率的な双方向通信が実現できる技術 WebSocket

    Tweet Tweet前回は、Web Storage と Indexed Database といったストレージについて解説した。ここでは、効率的な双方向通信が実現できる技術 WebSocket について解説する。 1 WebSocket概要 WebSocketとは WebSocketはサーバとクライアントの間で効率的な双方向通信を実現するための仕組みである。WebSocketは非常にシンプルなAPIで構成されている。1のHTTP接続上で双方向のメッセージを自由やりとりできる。 既存の通信技術 XMLHttpRequest(XHR):クライアントからサーバ方向への非同期通信は、XHRの登場によって実現した。ただしクロスオリジン通信ができない Server-Sent Events:サーバからクライアント方向への通信(プッシュ通信)技術として仕様検討が進められている。仕様に従ったフォーマットで

    効率的な双方向通信が実現できる技術 WebSocket
  • 大規模システムにWebSocket/ServerSentEventsは入れて良いのか? - ふろしき Blog

    ブラウザの方はそこそこにポテンシャルが追いついてきたHTML5。 「WebSocket/ServerSentEventsとかさ、大規模なシステムへの導入しちゃおうぜ」ってボヤいては、血色の良かったエンジニアの肌がみるみる青ざめて「正気か?オマエ!?」とか罵られるのがここ最近の私の趣味でございます。 それでまぁ一応「何故?」と聞いてみるのですが、その理由は皆バラバラ。なので、現時点でのWebSocket/ServerSentEventsの大規模システム導入についての問題点を、だいたい私の知っている範囲でまとめてみました。 1. JavaEE7対応のAPサーバ製品が少ない WebSocketなどHTML5の通信系技術を使うとなると、やはりNode.jsになるのでしょう。しかし、エンタープライズとなると、やはり主力はJavaで、いきなり無くなるなんてことはありえません。そうなると、フロントエンド

    大規模システムにWebSocket/ServerSentEventsは入れて良いのか? - ふろしき Blog
  • リアルタイムチャット (Mojolicious::Lite) / Mojoliciousサンプル - Perl入門ゼミ

    Perl › Mojolicious WebSocketを使ったリアルタイムチャットのサンプルです。複数の画面を開いても他の画面に書き込みがすぐに反映されます。 ソースコード use strict; use warnings; use Mojolicious::Lite; my $clients = {}; websocket '/' => sub { my $self = shift; # Client id my $cid = "$self"; # Resist controller $clients->{$cid}{controller} = $self; # Receive message $self->on('message' => sub { my ($self, $message) = @_; # Send message to all clients foreach my

    リアルタイムチャット (Mojolicious::Lite) / Mojoliciousサンプル - Perl入門ゼミ
    mfham
    mfham 2013/12/01
    動いた!
  • ApacheでWebSocketを通すリバースプロキシ(mod_proxy_wstunnel)

    mod_proxyがWebSocketを通してくれないので困っていましたが,Apache 2.4.5になってmod_proxyがWebSocketも通してくれるようになるモジュールmod_proxy_wstunnelが出来たようです. まずはApacheのバージョンを2.4.5以降にあげてください.Apache 2.2のままやる方法もあるそうですが知りません. そうしたらhttpd.confに次のような行が追加されると思います.コメントアウトされていたら外してください. LoadModule proxy_wstunnel_module libexec/apache24/mod_proxy_wstunnel.so 最後にプロキシの設定をします. ProxyPassなどは上から順にマッチさせていくので,厳しい条件から書かなくてはいけません.また,httpとwsの2つのプロトコルを同じパスで共存

  • A WebSocket Mojolicious/DBI Example | Joel Berger [blogs.perl.org]

  • Mojolicious::LiteでWebSocketを使ってボンバーマン - メメメモモ

    こちらのサンプルプログラムについて調べたことメモ。 mojomber 概要 サーバに繋いだ分だけプレイヤーが作成されます 矢印キーで移動、スペースで爆弾を置く 爆発で自分が死ぬと自分のスコア(frag)が減ります 爆発で相手が死ぬと自分のスコア(frag)が増えます 爆発で死んだあと、5秒後に復活します Websocketでやり取りする情報 ステージを描画する(drawarena) プレイヤーを初期化(initplayers) 爆弾を初期化(initbombs) 新しいプレイヤー情報(new_player) 他の死亡プレイヤーを削除する(old_player) プレイヤー情報(player) プレイヤーが生き返る(alive) プレイヤーが死亡する(die) スコア情報(frags) 移動情報(move) 爆弾情報(bomb) 爆発情報(explode) ソースコード

    Mojolicious::LiteでWebSocketを使ってボンバーマン - メメメモモ
  • MojoliciousとPocketIOでWebSocketを使い、PUSHする。 - KJ blog

    2013-06-26 MojoliciousとPocketIOでWebSocketを使い、PUSHする。 PocketIOって? node.jsでwebsocketと言えばsocket.ioが代名詞のようになっていて(個人的にはそう思っている。。)、それをPerlらしく拝借したというのがPocketIO。 socket.ioはサーバサイド実装とクライアント実装に分かれているが、PocketIOではクライアント実装はまんまsocket.ioのJSを使ってサーバサイドの実装のみをPerlで書いている。つまりAPIは同じ、ということになる。所によっては未実装の機能もあるが、それはドキュメント等を読んでおくんなまし。 現時点でsocket.ioはversion9になっているが、PocketIOではクライアントサイドのJSはversion0.8.5のものしか正常に動作していない。(と思う。)Pock

  • MojoでWebSocketするときのまとめ - のらねこの気まま暮らし

    Mojolicious::LiteでWebSocketを使うまでにやったいろんなこと。 あるていど落ち着いてきたのでさらっとまとめてみる。 Mojo側でやること Client側でやること Varnishの設定を変える必要がある Androidでは対応ブラウザが少ない SoftBankは80番ポート以外かWifiでつなぎましょう Mojo側でやること webscoketメソッドを使って、websocket通信を受け付けるURLを用意。 各種イベントに対する動作を設定する。 $self->onの第1引数にイベント、第2引数に動作をサブルーチンリファレンスで渡せばいい。 $self->on(message => sub {...}); $self->on(finish => sub {...}); テスト段階での実装はとりあえずこんな感じ。 my $clients = {}; websocket

    MojoでWebSocketするときのまとめ - のらねこの気まま暮らし
  • MojoliciousでWebSocketに挑戦 - m_shige1979のときどきITブログ

    結論 Herokuではなんか動かなかった。まあ、Perlではサポートしていないことが問題かな? 原因はわからんけどとりあえず、そのままにしておく 対応 app.psgi # chatの画面 get '/chat' => sub { # パラメータを取得 my $self = shift; my $jslist = ['chat.js']; # URL my $url_base = $self->req->url->base; $url_base =~ s/http/ws/g; $self->stash('url_base', $url_base); # 変数をセット my $sub_title = 'WebScoketでチャットのテスト'; # テンプレート変数をセット $self->stash('title', $config->{title}); $self->stash('descr

    MojoliciousでWebSocketに挑戦 - m_shige1979のときどきITブログ
  • Mojolicious::Lite で WebSocket を使ったチャットを作る(現時点:2012年3月10日で動くコード) - 僕のYak Shavingは終わらない

    (新しい記事書いたら間違って消した・・・からもう一度書いたorz) Mojolicious::Lite で WebSocket を使ったチャットを作る - naoyaのはてなダイアリー で書かれていたものを 【perlメモ】Mojolicious::Lite+WebSocketでのチャットプログラム - KUMA TYPE で最新版のMojoliciousに対応してくださったんですけど、 現時点でコピペで動かなかったので最新版に修正してみました。 以下のIRCに解決方法が書いてありました。というかドキュメント読めと。 17:26 echoecho Hello! I am trying to get the hang of mojo websockets with this pretty simple chat-room example on Github (http://bit.ly/yO

    Mojolicious::Lite で WebSocket を使ったチャットを作る(現時点:2012年3月10日で動くコード) - 僕のYak Shavingは終わらない
  • Mojolicious::Lite で WebSocket を使ったチャットを作る - naoyaのはてなダイアリー

    node.jsの衝撃とWebSocketが拓く未来 (1/2):WebSocketで目指せ! リアルタイムWeb(1) - @IT という記事を読みました。node.js という V8 を用いたサーバーサイド JavaScript フレームワークを使うと簡単にイベント駆動のサーバが書ける、node-websocket-server.js を使うと node.js で WebSocket サーバが実装できる。Ajax による polling や Long Polling などと WebSocket のアーキテクチャ比較といった内容でした。 WebSocket を使うと手軽にサーバプッシュ的なアプリケーションが作れて嬉しいのですが、現時点では、HTTPサーバー側で WebSocket を処理する下地の実装をどう用意するかというところがひとつ課題でしょう。node.js はその回答のひとつとして

    Mojolicious::Lite で WebSocket を使ったチャットを作る - naoyaのはてなダイアリー
  • WebSocket アプリの負荷分散 : DSAS開発者の部屋

    最近 SPDY と WebSocket がアツいですね。 再来週の SPDY & WS 勉強会 も、定員100名に対して 参加者が 247 名とかなりアツいことになっています。 その予習というわけでもないですが、最近 WebSocket を実サービスへの 導入方法を考えながら遊んでいたので、 WebSocket の負荷分散方法について 考えていることを書いておこうと思います。 ステートフルな WebSocket アプリケーション HTTP サービスは基的にステートレスな実装になっており、リクエストが来るたびに DBサーバーや memcached などのバックエンドから情報を取得して返していました。 この構成では Web アプリ自体は完全にステートレス化することができているので、 負荷分散機はラウンドロビン等のアプリケーションを無視した負荷分散をすることができました。 しかし、 WebSo

    WebSocket アプリの負荷分散 : DSAS開発者の部屋
  • Introducing WebSockets - Bringing Sockets to the Web  |  Articles  |  web.dev

    Introducing WebSockets - Bringing Sockets to the Web Stay organized with collections Save and categorize content based on your preferences. The problem: Low latency client-server and server-client connections The web has been largely built around the so-called request/response paradigm of HTTP. A client loads up a web page and then nothing happens until the user clicks onto the next page. Around 2

    Introducing WebSockets - Bringing Sockets to the Web  |  Articles  |  web.dev
  • WebSocket サーバの実装とプロトコル解説 - Block Rockin’ Codes

    intro なんだかんだ WebSocket を使ってるのに、 WebSocket サーバを自分で書いたことが無かったので、RFC も落ち着いてきたここらで、仕様を読みながら実装してみようと思いました。 "WebSocket サーバ 実装" とかでググると、 Socket.IO とか pywebsocket で WebSocket アプリ作って、「WebSocket サーバを実装」みたいなタイトルになってることが多いみたいですが、 (Apache に PHP で HelloWorld して、「HTTP サーバ実装しました」とは言わないよね。) この記事では、 WebSocket プロトコルをしゃべるサーバ自体を実装します。 といっても、全部やるのはちょっと大変だったので、基的なテキストメッセージのやりとりの部分だけやって、エコーサーバができるところまでやりました。 完成版のソースは以下で

    WebSocket サーバの実装とプロトコル解説 - Block Rockin’ Codes
  • WebSocketでリアルタイム処理をする

    9. 急遽変更した点 Chromeとリアルタイム通信する箇所は当初は GCM(Google Cloud Messaging for Chrome)を使って いたが、node.jsに完全移行した。 変更した理由は、リクエスト回数制限(10000req/day)と APIの機能不足 複数ユーザで連続通信した場合越える可能性が高い 機能が少ない。例えばGCMは接続する全てのクライアントに同機能が少ない。例えばGCMは接続する全てのクライアントに同 じデータを送りつけるためユーザ単位の制御ができない。クライ アントの特定はChromeExtensionのChannelIdだが、インス トールしたクライアントですべて同じIDになってしまうため個別 の制御ができない 外部サービスに頼るのは基的によくない(仕様変更、勉強の観点 から) Google Cloud Messaging for Chrome

    WebSocketでリアルタイム処理をする
  • 技術メモ/Node.js+Web Socket+MySQL/PostgreSQL - ShoheiYokoyama

    node.jsのインストール node.jsをfedora16にインストールしまっす。 http://johnroach.info/2011/11/20/installing-node-js-0-6-2-on-fedora-16/ 準備 コンパイル等に必要なツールをインストール # sudo yum install git openssl-devel gcc gcc-c++ mongodb ダウンロード gitから持ってきましょう # git clone –depth 1 git://github.com/joyent/node.git こんな感じで出力したら成功 Cloning into 'node'... remote: Counting objects: 26253, done. remote: Compressing objects: 100% (10941/10941), don

  • Happy Elements Labs: websocket + HTML5(canvas)でのゲーム開発(ボンバーマン風)

    はじめに エンジニアの@ryooo321です。 よろしくお願いします。 Happy Elements株式会社では勉強会が活発に行われており、 その中の1つに「1.5時間で○○を作る」エンジニア向けワークショップがあります。(毎週開催@京都) ※ ○○は毎週かわり、設計/実装方法などは自由です。 今回はワークショップ2回(計3時間)で作成したボンバーマン風ゲームの紹介を通して、 他人とリアルタイムで遊べるゲームの可能性を感じていただければと思います。 ※ 技術的にはwebsocket、canvasを利用 ※ ライブラリ/ツールとしてNode.js、CreateJS、socket.io、coffeescriptを利用 ※ 急いで作ったのでほとんどリファクタリングされていませんmm また、おまけとして サーバーサイドでのcanvas描画とwebsocketでのバイナリメッセージについて 試してみ

  • Node.jsによるPusherクローン「Keima」をリリースしました #codefirst - みずぴー日記

    http://keima.herokuapp.com/ 「えーpolling!? pollingが許されるのは小学生までだよねー、キャハハハ」というわけでpush通知にWebSocketをお使いのみなさま、こんにちは。 しかし、毎回、WebSocketを扱う機能を実装するのは、いくつかの理由で面倒ですよね! WebSocketは様々なバージョンがあるので、すべてに対応するのは面倒。 同様の理由で、個別のアプリで作り込んでしまうと、WebSocketのバージョンアップに追従するのが面倒。 WebSocketは大抵別サーバになっているので、設定が面倒。 Heroku等のPaaSではWebSocketを使えないことが多い。 (2015/1/23追記: HerokuはWebSocketをサポートするようになりました) そこで、WebSocketによるpush通知に特化したWebサービス Keima

  • dstatの結果をfluentdで取得して、WebSocketで送りつけるリアルタイムリソース監視アプリを作ってみた。 - from scratch

    Tuppari公開記念Hackathonで作ろうとした奴を作ってみました。 ごめんなさい、micro instanceなのでアクセス過多で動かない時があるかもしれません、ちょっと調整中です。 リアルタイムリソース監視アプリ yosuke-furukawa/dstatwatcher · GitHub WebSocketを使ってリアルタイムにリソース監視したりログ監視したりするのは正直よくあるやつなのですが、fluentd使ってみたかったというのと、highchartを業の方で使おうか迷った挙句、使えなかった経緯があったので、使ってみようと思って作成してみました。 大体、↓の感じの流れでやってます。 Fluentdとdstatのつなぎの部分にはfluent-plugin-dstatを使用しています。 shun0102/fluent-plugin-dstat · GitHub これを使うと、d

    dstatの結果をfluentdで取得して、WebSocketで送りつけるリアルタイムリソース監視アプリを作ってみた。 - from scratch
  • 1