PHPでWebSocketを扱うにはどうしたら良いかなーと探してみると、Ratchetというライブラリが見つかりました。 公式: http://socketo.me/ GitHub: https://github.com/cboden/Ratchet GitHubのスターの数もそれなりだったので、どんな感じか確認してみました。以下、手順です。尚、Macで確認しています。 (1) composer.jsonを用意して、いつものコマンドを実行します。 http://socketo.me/docs/install を参考にしています。 { "require": { "cboden/Ratchet": "0.2.*" } } $ curl -s https://getcomposer.org/installer | php $ php composer.phar install (2) サンプルフ
nginx(1.3.13)でWebSocketのプロキシを試してみました 2013/2/19にnginxが正式にWebSocketに対応したとアナウンスがあったので、試しに使ってみました。 ダウンロード・インストール ここからnginx-1.3.13をダウンロードしてきて、インストールします。 インストールオプションはあえてデフォルトで $ wget http://nginx.org/download/nginx-1.3.13.tar.gz $ tar xvf nginx-1.3.13.tar.gz $ cd nginx-1.3.13 $ ./configure $ make $ sudo make install 設定ファイルの書き換え 次にnginx.confを書き換えます。構成は リバースプロキシ: 192.168.0.8:80 バックエンドサーバ: 192.168.0.2:3000
RealtimeViewerを作ったらREADMEを書くのがとても捗る件について READMEを書くときはMarkdown形式で書くと思うのですが、四六時中その記法で書いているわけでは無いので、なかなか覚えられないわけです。Rubyの場合はRDoc形式で書くのが普通なのかな?まぁWikiにしろ何にしろ似たような記法増えすぎだと思うのです。 わたしのようなゆとりには、プレビューしながら確認できるととても幸せになれます。とは言っても、ブラウザ上で入力なんてしたくないし、自分のお気に入りのエディタを使いたいわけです。 こちらの記事にあるツールを使っていたのですが、どうも自分の環境ではファイルを保存しなおすと、高確率でreadでこけるようで・・。 というわけで(上記ツールを参考にして)自分で作ってみました。 インストール、および実行方法は以下のようになります。 gem install rdoc-v
intro この記事は 東京Node学園祭2012 アドベントカレンダー : ATND の 24 日目の記事です。 Socket.IO の 1.0 が、出る出るといって全然出ないので、 やきもきしている方も多いと思います。 しかし、その裏では Engin.IO という、割りと良い感じの ファミリープロジェクトができていて、 ちょうど先日 RealtimeConf でもその話がありました。 これは Socket.IO にも繋がるはなしなので、 今日はその Engine.IO の話をします。 参考はこのへん、 https://github.com/LearnBoost/engine.io https://vimeo.com/52496621 Engine.IO と Socket.IO (と WebSocket.IO) Socket.IO は、 1.0 を視野に入れたあたりで、 関連プロジェクト
PHPWebSocket ChatはPHP製のWebSocketサーバによるチャットデモです。 WebSocketというとnode.jsというイメージがありますが、実際はそんなことはありません。他の言語だってWebSocketサーバになりえます。今回はPHPで作られたPHPWebSocket Chatを紹介します。 接続しました。 発言しました。 こちらはサーバ側。 PHPWebSocket ChatはHTMLファイルのチャット画面とPHP製のサーバスクリプトになっています。サーバをPHPコマンドで実行すれば後はHTMLを表示させるだけでチャットができる仕組みです。PHPプログラマーにとってはより手軽にWebSocketが使えるようになるのではないでしょうか。なおソースに最大接続数は100と設定されています。 PHPWebSocket ChatはPHP製のソフトウェア(ソースコードは公開さ
intro なんだかんだ WebSocket を使ってるのに、 WebSocket サーバを自分で書いたことが無かったので、RFC も落ち着いてきたここらで、仕様を読みながら実装してみようと思いました。 "WebSocket サーバ 実装" とかでググると、 Socket.IO とか pywebsocket で WebSocket アプリ作って、「WebSocket サーバを実装」みたいなタイトルになってることが多いみたいですが、 (Apache に PHP で HelloWorld して、「HTTP サーバ実装しました」とは言わないよね。) この記事では、 WebSocket プロトコルをしゃべるサーバ自体を実装します。 といっても、全部やるのはちょっと大変だったので、基本的なテキストメッセージのやりとりの部分だけやって、エコーサーバができるところまでやりました。 完成版のソースは以下で
彼女とMacBookを並べてコーディング。 ようやくRailsの開発を一人で出来るようになった彼女が、俺に突然質問を投げかけた。 「ねぇ、WebサービスのPushってどうやって実装するの?」 「一般的には3つの方法がある。」と俺は答えた。 「クールな順にWebSocket、次にコメット、最後にポーリングだよ」 彼女は目を輝かせながら「それでそれで?!」と説明を求めてくる。 「ポーリングは、一定の時間ごと、たとえば3秒ごとにAjaxでサーバにリクエストを送って新着の情報が無いか問い合わせて、もし新着があれば処理を、なければスルーして次の問い合わせに備えるPush通知の実装だ。手軽に実装できる反面、新着がない多くの時間常にリクエストを送り続けることになるので無駄が多い。大規模なサービスで実装すれば、それだけでDDoSっぽくなっちゃう。また、リアルタイムも厳密には実現できなくて、MAXでポーリン
ネット上で生活保護をめぐる話から親と子の関係の話に話題がとび、さらに「頭のよさ」についての話題にもなっているので、ぼくもちょっと書いてみる。 DQNの教育問題について、またはわたしもDQNであるということ - はてなの鴨澤 環境という足枷 - G.A.W. 「頭がいい」とはどういうことか。 これはちまたで「勉強できるやつが頭がいいとは限らない」という言葉で、「勉強ができる≠ 頭がいい」というふうに認識されている。ぼくもよく言われたよ。「あんた大学出てるのに、そんなこともできないの(知らないの)」。 じゃあ「頭がいい」って一体なんなんだ、ということになる。 二つの「頭のよさ」──(1)「学者的に頭がいい」 「頭がいい」には二つある。 一つは「学者的に頭がいい」ということ。 もう一つは「うちのオヤジ的に頭がいい」ということ。 結論から先にいえば、前者は概念を体系化できる能力であり、後者は目的を
去年PHPで実装するWebSocketサーバーについて書きましたが、ブラウザのバージョンが上がり、内容が古くなってきたので、2012年1月2日今現在のブラウザで動くよう改めて書いてみようと思います。 前回とブラウザ以外は変わりませんが、今回はこんな環境で動かします。 さくらのVPS CentOS PHP 5.3.6 Chrome 17.0.942.0 dev-m Firefox 8.0 release channel Safari 5.0.2 iPhoneのmobile Safari iOS5.0.1 ※サーバー側のWebsocket用ポート開放を忘れずに。 今回の最終目標は上記ブラウザすべてで動作するリアルタイムお絵かきツールを作る事にします。 まずは動かしてみる 手順 ライブラリなどを配置してひとまずデモ用のチャットアプリケーションを動かしてみます。こんな手順で進めていきます。 Web
Redmine, git, Jenkins などプロジェクト管理ツールの状態を横断的かつリアルタイムに表示するWebアプリ『Dashbozu』を作りました。 これを使えば、一つの画面でプロジェクトの”今”の状態を把握できます。 WebSocketを用いているので、ただ開いているだけで、次々と情報を得ることができます。 iPadで開きっぱなしにして、机の上に置いておくような使い方を想定しています。 なぜこれを作ったか 一般的なソフトウェア開発現場では Redmineでチケットを作成する gitでコミットを繰り返し、中央レポジトリにpushする JenkinsによるCIが実行される 結果を確認し、Redmineのチケットを閉じる という流れで作業が進んでいきます。 これらの作業の中で、開発者は「適切な」タイミングでチェックとフィードバックをすることを求められます。 例えば、チェックのタイミング
長い記事なので、先に結論だけ書いておきます。WebSocketのバイナリメッセージ機能は、これまでのインターネットのあり方をひっくり返します。「そんなの知ってるよ」という方もいるとは思います。僕も理屈では分かってたつもりだけど、実際にアプリを作ってみて、具体的にそれを感じることができたので、ちょっと長いですがどういうことなのか説明してみます。 WebSocketとは # WebSocketは、HTML5関連の中でも特に注目を集めている技術の一つです。通常のHTTP通信であればクライアントからのリクエストなしにサーバーは応答しませんが、WebSocketを使うことでクライアントとサーバーの間で双方向の通信が可能となります。これを利用することで、今後様々なリアルタイム性の高いサービスを構築することが可能になるでしょう。 そんなWebSocketですが、これまで波乱の道を歩んできました。数年前か
WebSocket を利用したアプリケーションを作る際に、動作確認が煩雑な場合があります。 サーバ側とクライアント側をどちらも実装する必要があって、「ちょっとこの部分だけ動かしてみたいなぁ」っていうときに、簡単に試す方法があると便利ですよね! そんなときにおすすめなのが、 wscat です。 wscat は、コマンドラインで利用できる WebSocket のサーバ/クライアントで、ws に同梱されています。 ws とは、 Node.js 上で WebSocket を使うためのモジュールで、Socket.IO やengine.io の内部でも利用されている今注目のプロダクトです。 今回は、この wscat の使い方をご紹介します。 対象バージョン ws (0.4.7) インストール Node.js のモジュールなので、 npm でインストールするのが簡単です。 $ npm install -
次世代のWebアプリケーションの中核を担う技術として「HTML5」に注目が集まっているが、それと並んで期待されている技術に「WebSocket」がある。 IETFとW3Cによって仕様の策定が進められており、最初の提案以来幾度もの改訂を経て、2011年12月11日にそのプロトコル仕様がRFCのProposed Standard(RFC 6455)となった。 AjaxからComet、そしてWebSocketへ WebSocketはウェブサーバとブラウザが直接コネクションを張って双方向通信するための技術規格である。HTTPとは異なる独自の軽量プロトコルによって通信を行うため、オーバーヘッドが小さく、長時間に渡って通信する場合でもHTTPコネクションを占有する必要がないというメリットがある。 WebSocketが生まれた背景には、サーバとブラウザがもっとリアルタイムに通信して情報の配信や更新を行え
WebSocketに関する、よくある質問や知っておいたほうがよさそうなことをまとめてみました。 技術的なことについては深くはふれていません。 あやまりがあれば指摘してください。 Q. 仕様が2つあるみたいだけど... A. WebSocketは、主にブラウザ上で使うことを考慮された通信の規格で、通信の「プロトコル」とJavaScriptから使うための「API」に仕様がわかれています。前者は「WebSocket Protocol」として「IETF」が、後者は「WebSocket API」として「W3C」がかかわっています。 Q. WebSocketってまだ仕様が固まってないんじゃないの? A. WebSocket ProtocolはIETFのRFCの「標準化提案」に、WebSocket APIはW3Cの「勧告候補」になりました。IETFにもW3Cにも承認プロセスがあり、それぞれ最後には「標準
WebSocket が、12月12日についにRFCになりました(RFC6455)。テキスト転送だけでなく、バイナリー転送もサポートされ、コネクションをキープするための ping/pongなどコントロールフレームも定義されました。rfcになる過程で様々なバージョンと、その実装系が出ていますので、そこのネゴシエーションの仕組みが入っていたり、以前は割と自由に使えそうだった subprotocolが、IANAにレジストレーションが必要になったりと、なかなかしっかりしたプロトコルに仕上がっている印象です。 さて、今年最後となる、今日のポストでは、このWebSocketにより、今後のWebはどうなっていくのかについて、僕が最近感じている妄想を書き連ねてみます。 WebSocketとは、いったい何なのか? さて、WebSocketとは、いったい何なのでしょうか?この問に対して、一般的には、 WebでP
はじめに ブラウザ間でP2P通信が実現できれば、ブラウザ上で動作するP2Pアプリが作れて面白そうだなーと思ったのでWebSocketを使って実現してみました。仕組みについては以下で説明していきますが、私が実現した方法は限定的で実用性が低く色々と足りない部分もあるので、軽い気持ちで読んで頂けるとありがたいですw 仕組みの概要 なぜWebSocketを使うのか 従来、Webサーバとクライアント(Webブラウザ)間で非同期に通信するにはXHR(XMLHttpRequest)を用いてきました。基本的にこのXHRは以下の図のように同一ドメインとしか通信できないという制約がありました。*1 しかし、WebSocketのthe Origin-based security modelでは異なるドメインとも通信することが可能になります。WebSocketプロトコルでは、サーバとクライアント間で接続を確立する
風邪引いてるっぽくて頭痛と吐き気がひどいのですが、昨日作ったコード置いておきます GitHub - mizchi-sandbox/node-rss-reader: LDRっぽいRSSリーダー http://w-mtlab.com:2000 にサンプルを置いておきます これは僕(mizchi)の未読です (共通の未読管理フラグ使ってるので、誰かが読んでしまってると読めません) コード総数は600行ぐらいなので、サンプルにはなると思います。プリントデバッグの名残が大量に残ってますが… 挙動はほぼLDRのjksaoのクローンです。マウスオペレーションはサポートしていません。 zappa.jsとKnockout.jsとwebsocketの練習がてら作りました。 knocout.js使ってみた感想 knockout.jsよかった(小学生並みの感想) いや、風邪引いて頭悪いので後日フレームワークの感想
本文 時間がないので走り書き備忘録。失敗エントリです。 Github で使われてから、defunkt/jquery-pjax · GitHub がにわかに話題になって、自分も面白いと思っています。 で、この処理自体は pjax を使うと非常に簡単に出来てしまうんですが、 中身を少し見ておきたかったのと、 やる事自体に意味が有るかどうかは別として、 それと同じようなことが WebSocket でもできないかと思って試してみました。 (リアルタイムな Web でもどっかで URI 振りたい時もなくはないし) ajax と pushState ざっくり説明すると。 最近のブラウザは history.pushState history.popState history.replaceState という API があってこれを使うとヒストリー(ブラウザの履歴)を JS から変更できます。 これを使う
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く