Node.js はリアルタイム フレームワークとほぼ同義語になっていますが、他のテクノロジのソリューションもあります。PHP ソリューションについては、Ratchetをご覧ください。私がキュレートしているリアルタイム Web 技術ガイドで、他の言語のより詳細なリストを見つけることができます。
クライアントとサーバー間の永続的な接続をオフロードしたい場合は、私が働いているPusherなどのリアルタイムのホストされたサービスを見ることができます。あなたがそれをするなら、あなたはできる:
ライブラリを HTML に追加し、Pusher に接続します
<script src="http://js.pusher.com/1.12/pusher.min.js"></script>
<script>
var pusher = new Pusher( 'YOUR_APP_KEY' );
// Additional JavaScript - see below
</script>
SMS チャネルを購読する
var smsChannel = pusher.subscribe( 'sms' );
着信 SMS メッセージのチャネルのイベントにバインドする
smsChannel.bind( 'incoming', function(){} );
イベントを処理し、必要に応じてアプリを更新します
smsChannel.bind( 'incoming', function( smsData ) {
var phoneNo = smsData[ 'PhoneNo' ];
var msg = smsData[ 'Msg' ];
// Update the UI as required.
} );
データベースを更新した後、サーバー上で Pusher を呼び出す必要があります。
プッシャー ライブラリを含める
// See: http://pusher.com/docs/server_libraries#php
require('Pusher.php');
PHP スクリプトへのリクエストを処理する
// I've had to guess a bit here. Hopefully you can convert this to something which meets your requirements/data structures
$update = $_POST['sms_data'];
$query = sprintf("INSERT INTO updates (Phoneno, Msg) VALUES ('%s', '%s')",
mysql_real_escape_string( $update['Phoneno'], $update['Msg'] ) );
$result = mysql_query($query);
if($result) {
// trigger event
}
イベントをトリガーする
if( $result ) {
// Use key, secret and id defined from config somewhere
$pusher = new Pusher( PUSHER_APP_KEY, PUSHER_APP_SECRET, PUSHER_APP_ID);
$data = array( 'Phoneno' => $update['Phoneno'], 'Msg' => $update['Msg'] );
$pusher->trigger( 'sms', 'incoming', $data );
}
この例では Pusher を使用していますが、他のリアルタイム Web テクノロジでも同様のパターンに従うことができます。
自己ホスト型オプションを使用する場合は、サーバーがクライアントに新しい SMS を即座に通知できるようにする永続的な接続によって使用されるリソースを管理する必要があります。ホストされたサービスを使用する場合、これについて心配する必要はありません。
また、ここで達成しようとしていることと非常によく似たことを行う Pusher とTwilioの使用に関するチュートリアルも書きました。ただし、コードは Ruby です。参照:
http://www.twilio.com/blog/2012/07/pusher-and-twilio-making-realtime-fuctionality-easy.html