May 1, 2013

WebSocketとWAMPとRatchetに関するメモ

FuelPHPのパッケージとしてRatchetを組み込んだ流れで、Ratchet周りを色々と探っている最中です。
http://socketo.me/
https://github.com/mp-php/fuel-packages-ratchet

で、Ratchetのドキュメントに"WAMP"とか"WampServer"という言葉が出てきます。"WAMP"は"WebSocket Application Messaging Protocol"の略らしいです。
http://wamp.ws/

上記URLには
WAMP is an open WebSocket subprotocol that provides two asynchronous messaging patterns: RPC and PubSub.
と書かれています。

RPCパターンとPubSubパターンという二つの非同期メッセージングパターンを提供する。とのことですが、PubSubパターンは何となく良いとして、RPCパターンって何だろう。となりました。そして、以下に、その説明が書かれています。
http://wamp.ws/faq
What is RPC?
Remote Procedure Call (RPC) is a messaging pattern involving peers to two roles: client and server.
A server provides methods or procedure to call under well known endpoints.
A client calls remote methods or procedures by providing the method or procedure endpoint and any arguments for the call.
The server will execute the method or procedure using the supplied arguments to the call and return the result of the call to the client.
RPCは"Remote Procedure Call"の略のようで、早い話が、クライアント(ブラウザ等)が遠隔地(サーバ)の処理を呼び出して、サーバはクライアントに結果を返す。みたいな感じでしょうか。

確かに、Ratchetにはこの機能が備わっていて、例えば公式のサンプルだと、以下にonCallというメソッドがあります。
https://github.com/cboden/Ratchet-examples/blob/master/src/Ratchet/Website/ChatRoom.php

そして、Ratchetのドキュメントにも記載があるAutobahnJSというJSライブラリにも、それを呼び出すと思われるメソッドがあります。
http://autobahn.ws/js/reference#Session_call

で、WAMPのサイトに戻って
を見てみると、"Servers"に"Ratchet"が書かれています。

なので、RatchetはPubSubパターンとRPCパターンを(正しく)提供しているWebSocketライブラリ。となるのかなーというのが、ここまでの自分なりの解釈です。

(なんかこの辺りの話は、すっ飛ばすと後でつまづく原因になる気がする。)

No comments:

Post a Comment