【发布时间】:2012-05-27 05:56:52
【问题描述】:
我写了一些代码示例,通过 socket.io 识别连接的用户...所以现在我必须在索引页面上编写代码来与用户通信。
代码如下,如何向用户[1]“欢迎”和用户[2]“HI men”发送消息,并限制 2 个用户的连接。所以当 2 个用户连接时,其他任何人都无法连接..
索引.html:
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect();
var users;
socket.on('hello', function (data) {
console.log(data.hello);
});
socket.on('listing', function (data) {
users = data;
});
socket.on('chat', function (message) {
console.log(message);
});
socket.on('message', function (message) {
console.log(message);
});
function chat (message) {
socket.emit('chat', message);
}
function message (user, message) {
socket.emit('message', {
user: user,
message: message
});
}
</script>
app.js
var express = require('express');
var app = express.createServer();
var io = require('socket.io').listen(app);
app.listen(3000);
app.use(express.static(__dirname));
var users = {};
var userNumber = 1;
function getUsers () {
var userNames = [];
for(var name in users) {
if(users[name]) {
userNames.push(name);
}
}
return userNames;
}
io.sockets.on('connection', function (socket) {
var myNumber = userNumber++;
var myName = 'user#' + myNumber;
users[myName] = socket;
socket.emit('hello', { hello: myName });
io.sockets.emit('listing', getUsers());
socket.on('chat', function (message) {
io.sockets.emit('chat', myName + ': ' + message);
});
socket.on('message', function (data) {
users[data.user].emit('message', myName + '-> ' + data.message);
});
socket.on('disconnect', function () {
users[myName] = null;
io.sockets.emit('listing', getUsers());
});
});
app.listen(process.env.PORT);
【问题讨论】:
-
所以你想识别哪个用户连接到哪个套接字?
-
拥有像 userNumber 这样的变量很好,但从长远来看它绝对不会帮助你,我建议去 mongodb 并开始在其中存储值
-
我需要这个作为一个例子......所以我想了解如何向不同的用户发送不同的消息并将消息从客户端发送到服务器,然后处理消息......所以我需要例如等发送onload消息给用户[1],然后当发送消息时创建一个div会渴望5s - 仅适用于用户1......不适用于用户2......以及如何发送消息到两个用户
-
是否有一些教程或其他东西可以帮助我将它与 mongodb 连接起来
-
没有好的简单的基本示例......那么我的脚本如何做到这一点?任何想法
标签: javascript node.js socket.io