2013-05-31 11 views
5

私はphp + mysqlを使用してアポイントセンタWebアプリケーションを開発中です。私が現在しようとしているのは、Webサーバーからサードパーティプッシャーのないクライアント/ユーザーのBowersに、jQuery SetInterval AJAXリクエストを使用せずに予定が行われたときに通知を送信することです。私はSetInterval &と思うAJAXは、クライアントとサーバーの間にあまりにも多くのトラフィックがあるので、悪いアプローチです。Webサーバからクライアントのボーイアへのリアルタイム通知

SetIntervalでサーバーをポーリングせずに通知を実装するにはどうすればよいですか?

+0

私の回答を読むことができます同様の質問[ここ](http://stackoverflow.com/questions/16524727/how-to-output-in-realtime-when-number-is-change/16531635#16531635) 。私はそれが助けて欲しいああ、ノードサーバーなどは必要ありません。 – SergioMSCosta

答えて

13

NodeJsを使用してこれを行うことができます。 NodeJSはリアルタイムで接続されたクライアントにコンテンツをプッシュするサーバー上のjavascriptです。

本当に使いやすくセットアップが簡単です。 リアルタイムアプリ専用のサーバーが必要です。http://nodejitsu.comを使用しています。

サーバー側

var app = require('http').createServer(handler) 
, io = require('socket.io').listen(app) 
, url = require('url') 

app.listen(8080); 

function handler (req, res) { 
// parse URL 
var requestURL = url.parse(req.url, true); 

// if there is a message, send it 
if(requestURL.query.message) 
    sendMessage(decodeURI(requestURL.query.message)); 

// end the response 
res.writeHead(200, {'Content-Type': 'text/plain'}); 
res.end(""); 
} 

function sendMessage(message) { 
io.sockets.emit('notification', {'message': message}); 
} 

クライアント側

<script src="socket.io.min.js"></script> 
<script> 
var socket = io.connect('http://localhost:8080'); 
socket.on('notification', function (data) { 
    console.log(data.message); 
}); 
</script> 

私はuが選択されていると感じ、将来の読者

+1

私はnode.jsが私の必要としているものだと思っています。(: –

+0

@MDDY私はちょうどこれの始まりです。これを助けてください。どこから 'socket.io.min.js'ファイルを入手できますか?与えられた答えのいくつかの詳細。 –

2

のための答えを完了するために、以下の@intivevで例を使用するように簡単に追加この目的のために間違った言語(PHP)がある場合、PHPでそれを行う方法があるかもしれませんが、私はそれがねじれたものになることを確信しています。私は

var app = require('http').createServer(handler) 
, io = require('socket.io').listen(app) 
, url = require('url') 

app.listen(8080); 

function handler (req, res) { 
// parse URL 
var requestURL = url.parse(req.url, true); 

// if there is a message, send it 
if(requestURL.query.message) 
    sendMessage(decodeURI(requestURL.query.message)); 

// end the response 
res.writeHead(200, {'Content-Type': 'text/plain'}); 
res.end(""); 
} 

function sendMessage(message) { 
io.sockets.emit('notification', {'message': message}); 
} 
サーバー側

あなたがはるかに簡単な方法でクライアントにプッシュ通知を行うことができ、それを使用するなど、この目的のためのNode.jsを使用することをお勧めクライアント側

<script src="socket.io.min.js"></script> 
<script> 
var socket = io.connect('http://localhost:8080'); 
socket.on('notification', function (data) { 
    console.log(data.message); 
}); 
</script> 

ですから、その多くを見ますあなたがそれに適した言語を使用している場合はおしゃれな

4

これにWebSocketを使用できます。Ratchetは、 React library。私は本番用アプリケーションでこれらのライブラリを両方使用しており、それに満足しています。

はい、node.jsを使用することは現在の状況に応じて、オプションで、おそらくより良い方法です。

アンソニー。

+0

websocketについては、確かにnode.jsが良いです –

関連する問題