1

Compound.js (node.js/Express.js 上に構築) を使用する新しいプロジェクトで Socket.IO をテストしていますが、問題が発生しました。基本を機能させることができ、次のメッセージは正常に機能します。

サーバー側 JS (applicationname/config/initializers/socketio.js):

var sio = require('socket.io');
var http = require('http');
var activeClients = 0;

module.exports = function (compound) {
    var app = compound.app;
    var server = http.createServer(app);
    compound.server = server;
    var io = compound.io = sio.listen(server);

    io.sockets.on('connection', function (socket) {
        activeClients +=1;

        var connections = setInterval(function () {
            socket.emit('news', { clients: activeClients });
        }, 1000);

        socket.on('disconnect', function () {
            activeClients -= 1;
            io.sockets.emit('user disconnected');
            clearInterval(connections);
        });
    });
}

フロントエンド JS (applicationname/public/index.html):

<script src="/socket.io/socket.io.js"></script>
<script>
      var socket = io.connect('http://localhost');

      function msgReceived(msg){
        $clientCounter.html(msg.posts);
      }

      $(document).ready(function () {
        $clientCounter = $("#client_count");
        socket.on('news', function (data) {
            msgReceived(data);
            socket.emit('my other event', { my: 'data' });
          });
      });
</script>

私が今やろうとしているのは、サーバー上で作成された投稿の数を取得することです。デフォルトの足場を使用して、Posts メソッド、コントローラー、およびビューを生成しました。

投稿の総数を見つけて、その値をサーバー側の JS に渡すにはどうすればよいですか?

4

1 に答える 1

0

サーバー側での放出の数を数えて送信するだけですか?

    ...
    var emits = 0;
    var connections = setInterval(function () {
        emits++;
        socket.emit('news', { clients: activeClients , num_messages: emits});
    }, 1000);

    ...

または、クライアントからポーリングできる特定のメッセージを作成します

于 2013-02-22T08:44:25.857 に答える