Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Socket.io-如何提示输入用户名,并将用户名保存在数组中?_Node.js_Socket.io - Fatal编程技术网

Node.js Socket.io-如何提示输入用户名,并将用户名保存在数组中?

Node.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

我有一个基本的聊天室,可以检测用户何时连接到服务器并离开

现在,我想提示用户在加入服务器时输入用户名,我该怎么做

代码如下:

Index.html

<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));
    });