NodeJS Socket.io变量未定义

时间:2016-04-27 00:05:04

标签: node.js socket.io

我正在使用Node和Socket.io创建我的第一个聊天应用程序。到目前为止一切正常,除非我尝试输出client.nickname变量。

的index.html

var socket = io.connect('http://localhost:3000');
    socket.on('connect', function(data){
      $('#status').html("Connected!");
      var nickname = prompt("Whats ur name?");
      socket.on('join', nickname);
    });
    $('#submit-btn').click(function(){
      var msg = $('#input_text').val();
      socket.emit('messages',msg);
    });

    socket.on('messages', function(data){
      console.log(data);
    });

app.js

io.on('connection', function(client){
  client.on('join', function(name){
    client.nickname = name;
  });
  client.on('messages', function(data){
    var nickname = client.nickname;
    client.broadcast.emit('messages', nickname +": " + data);
    client.emit('messages', nickname + ": " + data);
  });
});

我的控制台输出: undefined:正确的信息。

应该输出: 凯尔(或提示中输入的内容):正确的信息。

1 个答案:

答案 0 :(得分:0)

您需要向'join'处理程序发送数据。

例如:

<强>的index.html

var socket = io.connect('http://localhost:3000');
socket.on('connect', function(data){
  $('#status').html("Connected!");
  var nickname = prompt("Whats ur name?");
  socket.emit('join', nickname); // change this line from socket.on('join', nickname);
});
$('#submit-btn').click(function(){
  var msg = $('#input_text').val();
  socket.emit('messages',msg);
});

<强> app.js

io.on('connection', function(client){
  client.on('join', function(name){
    client.nickname = name;
});

请注意,此代码未经过测试。