我正在为一个使用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 方法、 Controller 和 View 。
我现在如何找到帖子总数并将该值传递给服务器端 JS?
最佳答案
简单地计算服务器端的发出次数并发送?
...
var emits = 0;
var connections = setInterval(function () {
emits++;
socket.emit('news', { clients: activeClients , num_messages: emits});
}, 1000);
...
或者创建可以从客户端轮询的特定消息
关于javascript - 使用 Socket.IO 显示 Compound.js 中的对象计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15004323/