Socket io/计数单选按钮的个数"ok"
socket io/ count the number of radio button "ok"
我想计算一下有多少用户使用" btk "的单选按钮,如果你能帮忙,我很高兴。
enter code here<div class="sample clearfix">
<input type="radio" name="s2" id="off" value="0" checked="checked">
<label for="off" class="switch-off" id="btnng">う〜ん。。</label>
<input type="radio" name="s2" id="on" value="1">
<label for="on" class="switch-on" id="btnok">なるほど!</label>
</div>
server.js如下:
我可以数出有多少用户正在登录,但是我无法及时计算单选按钮的状态(实时)。
如果你能帮助我,我很高兴。var http = require('http');
var path = require('path');
var socketio = require('socket.io');
var express = require('express');
var router = express();
var server = http.createServer(router);
var io = socketio.listen(server);
router.use(express.static(path.resolve(__dirname, 'public')));
var clients = [];
io.on('connection', function (socket) {
console.log("ID: "+socket.id.substring(2)+"has connected");
clients[socket.id] = {
vote:''
};
io.sockets.emit('count', socket.client.conn.server.clientsCount);
socket.on('vote', function(data){
clients[socket.id].vote = data; // good or bad
var result = calcVote(clients);
io.sockets.emit('vote', result);
});
socket.on('disconnect', function() {
delete clients[socket.id];
io.sockets.emit('count', socket.client.conn.server.clientsCount);
});
});
var calcVote = function(calcclients){
var sums = {
good:0,
bad:0
};
calcclients.forEach(function(client){
switch (client.vote) {
case 'good' :
sums.good += 1;
break;
case 'bad' :
sums.bad += 1;
break;
}
});
return sums;
};
server.listen(process.env.PORT || 3010, process.env.IP || "0.0.0.0", function(){
var addr = server.address();
console.log("Chat server listening at", addr.address + ":" + addr.port);
});
node.js socket.io
您正在将clients
变量声明为数组,但您没有将其用作数组。相反,您只是将属性分配给clients
变量,而不是数组元素。因此,当您尝试使用.forEach()
来迭代连接的用户时,它不会做您想要的事情,因为.forEach()
只迭代数组元素,但是您只是将属性分配给数组,而不是数组元素。所以,你的.forEach()
不迭代任何东西。
更改为:
var clients = {};
然后,使用迭代方法迭代属性,如for/in
或for/of
,或者将属性名称放入具有Object.keys()
的数组中并迭代它们。
var calcVote = function(calcclients){
var sums = {
good:0,
bad:0
};
Object.keys(calcclients).forEach(function(id){
var client = calcclients[id];
switch (client.vote) {
case 'good' :
sums.good += 1;
break;
case 'bad' :
sums.bad += 1;
break;
}
});
return sums;
};
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- Javascript复选框函数:;缺少:在属性id之后"
- "“;变量未引用正确的对象
- "日期“;AJAX请求返回的类型值未定义
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- "工具提示"jQuery插件坏了
- "锻造;React中的表达式
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- 如何提取“;href"最近列表项中的属性值
- CKEditor如何允许href="javascript:void(0)"在小部件中
- 当我按下"ok"键时如何调用函数;在navigator.geolocation.getCurrentP