NodeJS サーバー側でプログラミングしています。クライアント ブラウザー側で JavaScript 関数を呼び出したいと考えています。サーバー側で関数を呼び出しているかのように、サーバー側からクライアント ブラウザー側で時々関数を呼び出すことができれば幸いです。
これを行うことができるフォーム、コメット、または RPC はありますか?
socket.io を使用すると、クライアントがリッスンするサーバー (この場合は「for_client」) からイベントが発行され、クライアント側イベント (この場合は「for_server」) のリスナーが設定されます。イベントの数に制限はなく、メソッドの呼び出しに使用できるコールバックを持つことができます。
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.emit('for_client', { someData: 'if necessary' });
socket.on('for_server', function(data) {
doSomethingServerSide(data);
});
});
function doSomethingServerSide(data){ console.log(data); }
クライアント側
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost');
socket.on('for_client', function (data) {
console.log(data);
socket.emit('for_server', { data: 'data' });
});
</script>
Socket.IOを使用すると、node.js とフロントエンド JS の間で永続的な通信を確立できます。
メッセージを発行し、両側から他のメッセージを購読できます。双方向通信であるため、要求/応答は必要ありません。任意の側から発行するだけで、別の側のコールバックによってキャッシュされます。