簡體   English   中英

Socket.io未從客戶端向服務器發送數據

[英]Socket.io not sending data from client to server

我似乎在使用socket.io從客戶端到服務器的通訊出現問題。

首先,我要發送的JSON對象

loginInfo = { email: 'username', password: 'password' }

在客戶端,我有:

socket.emit('user:login', loginInfo);

然后在服務器端

socket.on('user:login', function(loginInfo) {
    console.log('data being sent is:\n' + loginInfo);
});

這會在控制台中打印出來:

data being sent is:
function ack() {
    self.log.debug('sending data ack packet');
    socket.packet({
        type: 'ack'
      , args: util.toArray(arguments)
      , ackId: packet.id
    });
}

同樣,如果我這樣做

socket.on('user:login', function(loginInfo) {
    console.log('data being sent is:\n' + loginInfo.password);
});

控制台將輸出:

data being sent is:
undefined

我過去曾經使用過socket.io,並且以前從未遇到過此問題,因此我必須做一些奇怪的事情。 如果有人知道導致此問題的原因,我將非常感謝您提供有關如何解決此問題的見解。

編輯:問題與打印出來的內容無關,我只是用它來說明我的問題,這是客戶端未正確發送loginInfo JSON或服務器未正確接收到loginInfo JSON。 我的目標是讓loginInfo被服務器接收,以便我可以處理數據。

謝謝!

嘗試使數組成為對象的屬性……無論出於何種原因對我有用;

messageIds = [1,2,3,4,5,6];

這不起作用:

socket.emit('updateMessage',JSON.stringify(messageIds));

這確實有效:

  socket.emit('updateMessage',{1:messageIds});

奇怪的錯誤,不確定為什么。

您需要對對象進行字符串化以將其附加到字符串,否則行為將無法預測:

console.log('data being sent is:\n' + JSON.stringify(loginInfo));

客戶端是否可能有一個名為loginInfo的函數? 我相信socket.emit('user:login', loginInfo); 行正在發送函數而不是參數。 socket.emit作為參數的函數用於獲取確認。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM