2017-07-25 50 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); 
相關問題