gpt4 book ai didi

node.js - socket.io 实现一个简单的聊天

转载 作者:太空宇宙 更新时间:2023-11-03 22:03:19 25 4
gpt4 key购买 nike

我试图在socket.io google group上询问这个问题,但没有人可以(或不想)帮助我。

我在服务器端有这段代码:

var chat = io
.of('/chat')
.on('connection', function (socket) {
socket.emit('message', {
that: 'only'
, '/chat': 'will get'
});
});

chat.on("message", function(data){
console.log(data);
});

在客户端,我有以下代码:

  var chat = io.connect('http://localhost/chat');

chat.on('message', function (data) {
chat.emit('hi!');
});

chat.emit("message", {"this": "is a message"});

在控制台上,我可以看到来自服务器的第一条消息已发送,但客户端在连接并接收消息后似乎不会发出 'hi!' 消息。此外,我希望客户端还发出另一条消息,即我粘贴的最后一行。服务器也不会收到此消息(理论上应该记录它)。

我肯定做错了什么,有人能指出这到底发生在哪里吗?我最终想要实现的只是建立一个简单的类似聊天的系统,但我希望这些东西( channel )在实际编写聊天本身之前起作用。谢谢

最佳答案

之所以没有发送“hi”,是因为.emit中的第一个参数是事件名称,这里是“hi”。从技术上讲,如果您在服务器端执行以下操作,我认为您应该得到未定义的数据(因为您没有将任何内容作为要发送的对象的第二个参数):

.on('hi',function(data){
console.log(data) // should log "undefined"
});

您还可以使用类似于网络套接字语义的.send,并发送到message 事件。如果您在客户端将 .emit 更改为 .send,它应该可以工作。

总结:

.emit('eventName', 'data') // sends to the eventName name
.send('data') // sends to message event

工作客户端代码:

  var chat = io.connect('http://localhost/chat');

chat.on('message', function (data) {
chat.send('hi!');
});

chat.emit("message", {"this": "is a message"});

关于node.js - socket.io 实现一个简单的聊天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7770281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com