Node.js Socket.io-如何提示输入用户名,并将用户名保存在数组中?
我有一个基本的聊天室,可以检测用户何时连接到服务器并离开 现在,我想提示用户在加入服务器时输入用户名,我该怎么做 代码如下: Index.htmlNode.js Socket.io-如何提示输入用户名,并将用户名保存在数组中?,node.js,socket.io,Node.js,Socket.io,我有一个基本的聊天室,可以检测用户何时连接到服务器并离开 现在,我想提示用户在加入服务器时输入用户名,我该怎么做 代码如下: Index.html <html> <head> <script src="http://localhost:3000/socket.io/socket.io.js"></script> <script type="text/javascript" charset="utf-8"> var socket
<html>
<head>
<script src="http://localhost:3000/socket.io/socket.io.js"></script>
<script type="text/javascript" charset="utf-8">
var socket = io.connect('http://localhost:3000');
socket.on('entrance', function (data) {
document.write('<p>' + data.message + '</p>');
//STORE USERNAME of NEW SOCKET
// on connection to server, ask for user's name with an anonymous callback
socket.on('connect', function(){
// call the server-side function 'adduser' and send one parameter (value of prompt)
socket.emit('adduser', prompt("What's your name?"));
});
});
socket.on('exit', function (data) {
document.write('<p>' + data.message + '</p>');
});
socket.on('chat', function (data) {
document.write('<p>' + data.message + '</p>');
});
</script>
</head>
<body>
</body>
</html>
您可以将其添加到服务器代码中:
var用户=[];
游戏室插座打开(“连接”,功能(插座){
emit('entry',{message:'Welcome to the chat room!'});
emit('entry',{message:'您的ID是#'+socket.ID});
socket.on('adduser',函数(名称){
users.push(name);
//试图清理
插座。一次('断开',功能(){
var pos=users.indexOf(名称);
如果(位置>=0)
用户.拼接(位置1);
});
});
// ...
});
(如果两个用户选择相同的名称,它将不起作用。)server.js
标签中的index.html
。
var socket=io();
var nick=prompt('您想要的用户名是什么?');
$(函数(){
var socket=io();
socket.emit('newuser',nick);
//下面是定期论坛提交事件处理程序。
});
socket.on('connection2',函数(msg){
$('#messages').append($('”).text(msg));
});
socket.on('disconnection',函数(msg){
$('#messages').append($(' ”).text(msg));
});
如果只有一条语句,则它们是可选的。如果你不做任何事情,阵列将无限期地增长,内存泄漏,数千个封闭的插槽将被闲置。
var io = require('socket.io'),
connect = require('connect');
var app = connect().use(connect.static('public')).listen(3000);
var game_room = io.listen(app);
game_room.sockets.on('connection', function (socket) {
socket.emit('entrance', {message: 'Welcome to the chat room!'});
socket.emit('entrance', {message: 'Your ID is #' + socket.id});
socket.on('disconnect', function () {
game_room.sockets.emit('exit', {message: 'A chatter has disconnected.'});
});
socket.on('chat', function (data) {
game_room.socket.broadcast.emit('chat', {message: '# ' + data.message});
});
socket.broadcast.emit('entrance', {message: 'A new chatter is online.'});
});
io.on('connection', function(socket){
socket.on('newuser', function(nick){
var newUser = nick;
console.log(newUser + ' connected');
io.emit('connection2', newUser + ' connected.');
socket.on('disconnect', function(){
console.log('user disconnected');
io.emit('disconnection', newUser + ' disconnected.');
});
socket.on('chat message', function(msg){
io.emit('chat message', msg);
});
});
var socket = io();
var nick = prompt('What is your desired username?');
$(function () {
var socket = io();
socket.emit('newuser', nick);
// Regular forum submission event handler below this.
});
socket.on('connection2', function(msg){
$('#messages').append($('<li style="font-style:italic;">').text(msg));
});
socket.on('disconnection', function(msg){
$('#messages').append($('<li style="font-style:italic;">').text(msg));
});