nodejs socket.io - 连接到服务器但发出没有做任何事情

时间:2016-05-09 16:03:19

标签: node.js sockets express socket.io

我开始使用Socket.ionodeJS API

我成功连接了用户,并在我的服务器上显示了一条消息。

但是现在,我正在尝试将数据发送到我的客户端 - >然后服务器 - >然后客户再次等。

但是当我使用emit时,没有任何附加内容......所以这是我的代码:

SERVER SIDE

    io.on('connection', function(socket){
      console.log("user connected") // I see that
      socket.emit('text', 'it works!'); //

      socket.on('test1', function (data) {
        console.log('received 1 : ');  //  Never showed 
        console.log(data); // Never showed
      });

     }

CLIENT SIDE

    var socket = io.connect(myUrl); // good connection

    socket.emit ('test1', {map: 4, coords: '0.0'}); // never showed on the server side


    socket.on('text', function(text) {
      alert(text);  // never showed
     socket.emit('test', { "test": "test2" });
    });

有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:0)

您的入门代码似乎有效,您需要检查两件事:

  • 如果您成功将socket.min.js包含在客户端
  • 如果您在控制台中打印了任何错误

答案 1 :(得分:0)

在客户端,您必须等到连接成功,然后才能安全地将数据发送到服务器。连接到服务器不是同步的或即时的(因此它没有立即就绪)。您正在尝试在连接准备好之前发送数据。

将您的第一个数据发送到socket.on('connect', ...)处理程序中。

var socket = io.connect(myUrl); // good connection

// send some data as soon as we are connected
socket.on('connect', function() {
    socket.emit ('test1', {map: 4, coords: '0.0'});
});


socket.on('text', function(text) {
  alert(text);  // never showed
 socket.emit('test', { "test": "test2" });
});

答案 2 :(得分:0)

这对我有用

客户端

//sending custom data to server after successful connection
socket.on('connect', function(){
           this.socket.emit('client-to-server', {map: 4, coords: '0.0'});
        });
//listening the event fired by the socket server
socket.on('server-to-client', function(dataSendbyTheServer){
            // do whatever you want
               console.log(dataSendbyTheServer);
        });

服务器端

io.on('connection', function(socket) {
// listening the event fired by the client
socket.on('client-to-server', function (data) {
    console.log('received 1 : ');
    // sending back to client
    io.emit('server-to-client', data)
 });
});