我已经在我的客户端和服务器上设置了套接字,但我似乎无法将我的数据放入我的客户端。它们似乎正在正确连接,我无法获得任何数据。也没有错误消息。
这是我的服务器代码:
io.on('connection', function (socket) {
console.log('a user connected');
socket.on('custom-message', function () {
console.log("Hitting messages socket");
Message.find(function(err, messages){
if(err){
socket.emit('custom-message', err)
} else {
socket.emit('custom-message', messages);
}
})
});
});
这是客户端中连接到套接字的函数:
loadMessagesFromServer: function(){
console.log("About to load messages")
socket.on('custom-message', function(msg){
console.log("connected in client", msg)
});
},
就像我说这是一个非常简单的例子,我似乎无法在loadMessagesFromServer
中获取数据..并且没有错误,我调试的唯一方法就是尝试不同的东西..
答案 0 :(得分:0)
您正在聆听活动messages
。所以你需要发出不是socket.emit('messages: err', err)
的同一事件。试试socket.emit("messages", error)
。此外,在服务器端代码中,首先需要接收message
事件,然后套接字才会发出消息。删除socket.on(custom-messages)
。你为什么需要它?
服务器端代码
io.on('connection', function (socket) {
/* Here a client connection is established. The on("connection")
* event will be triggered as many times as`io.connect("the-uri")`
* is triggered (and succeeded) in the client`
*/
// Listening for the post event
socket.on("post", function(messages){
console.log("client posted data:", messages)
// Find messages and emit result
Message.find(function(err, messages){
if(err){
socket.emit('error', err)
} else {
socket.emit("message", messages);
}
});
});
});
客户端代码
registerOnMessageFromServerListener: function(){
socket.on("message", function(msg){
console.log("received message:", msg);
});
registerOnErrorFromServerListener: function(){
socket.on("error", function(error){
console.log("an error occured:", error);
});
registerOnMessageFromServerListener();
registerOnErrorFromServerListener();
socket.emit("post", "a-message");
还要确保在建立套接字连接之前调用loadMessagesFromServer