2017-07-25 64 views
-1

当客户端连接到服务器时,消息应该被发送到控制台。我没有得到任何错误,所以我很困惑我的问题实际上是什么。如何使用Node.js从客户端向服务器正确发送数据?

服务器:正如您所看到的客户端连接。 enter image description here
客户端:该消息未出现在控制台中。 client image
(请原谅我的链接,我没有10个声望)

如何让消息打印到控制台?

我读过其他职位像这样的,但他们没有帮助:(

+0

问题在这里关于代码必须包含粘贴到问题的相关代码,并适当地格式化为易于阅读。外部链接是允许的,但不能作为你的代码的唯一参考,因为外部链接有随时间改变或消失的习惯,导致这个问题作为一个长期搜索参考(这是堆栈溢出任务的一个重要部分)无用。而且,代码永远不应该作为图像包含在内,始终是格式正确的文本。 – jfriend00

+0

应将代码作为TEXT粘贴到您的问题中,而不是图像。图像不能被复制,也不能被搜索。 – jfriend00

回答

0

当你这样做io.connect(),这一呼吁是异步的,不是立竿见影的。你不能立即发射到服务器,直到客户端生成在connect事件:

var socket = io.connect() 
socket.on('connect', function() { 
    // it is safe to call `.emit()` here 
    socket.emit("sndMsg", someData); 
}); 
+0

@Darkauro - 如果您将更多的代码作为文本(而不是图像)包含在您的问题中,那么我们可能会有一个想法来进一步帮助。你有没有在客户端和服务器上检查控制台是否有错误?直接从堆栈溢出帮助中心,你应该包括一个[最小,完整和可验证](https://stackoverflow.com/help/mcve)你的问题的例子。除此之外,这意味着我们可能需要重现问题的一切。 – jfriend00

+0

谢谢。这帮了一大笔钱。在排放之前等待客户端连接是我遇到的一个问题。修复它之后,我也意识到我将io.connect设置为错误的url。对不起,低质量的职位,我真的很新,不适合下一次要遵循指导方针:) – Darkauro

0

的index.html

<html> 
    <head> 
     <script src='/socket.io/socket.io.js'></script> 
     <script> 
      var socket = io(); 

      socket.on('welcome', function(data) { 
       addMessage(data.message); 

       // Respond with a message including this clients' id sent from the server 
       socket.emit('i am client', {data: 'foo!', id: data.id}); 
      }); 
      socket.on('time', function(data) { 
       addMessage(data.time); 
      }); 
      socket.on('error', console.error.bind(console)); 
      socket.on('message', console.log.bind(console)); 

      function addMessage(message) { 
       var text = document.createTextNode(message), 
        el = document.createElement('li'), 
        messages = document.getElementById('messages'); 

       el.appendChild(text); 
       messages.appendChild(el); 
      } 
     </script> 
    </head> 
    <body> 
     <ul id='messages'></ul> 
    </body> 
</html> 

个server.js

var http = require('http'), 
    fs = require('fs'), 
    // NEVER use a Sync function except at start-up! 
    index = fs.readFileSync(__dirname + '/index.html'); 

// Send index.html to all requests 
var app = http.createServer(function(req, res) { 
    res.writeHead(200, {'Content-Type': 'text/html'}); 
    res.end(index); 
}); 

// Socket.io server listens to our app 
var io = require('socket.io').listen(app); 

// Send current time to all connected clients 
function sendTime() { 
    io.emit('time', { time: new Date().toJSON() }); 
} 

// Send current time every 10 secs 
setInterval(sendTime, 10000); 

// Emit welcome message on connection 
io.on('connection', function(socket) { 
    // Use socket to communicate with this particular client only, sending it it's own id 
    socket.emit('welcome', { message: 'Welcome!', id: socket.id }); 

    socket.on('i am client', console.log); 
}); 

app.listen(3000); 
相关问题