【问题标题】:socket.on not working for things I write? Help? It only works for disconnect.socket.on 不适用于我写的东西?帮助?它仅适用于断开连接。
【发布时间】:2015-03-21 04:09:21
【问题描述】:

客户:

var socket = io.connect();
socket.on('some stuff', function(){
console.log("Please please work.");
});

服务器:

var io = require('socket.io').listen(app);
io.sockets.on('connection', function(socket){

console.log("Yay, tab opened!");



 socket.on('disconnect', function(){
     console.log("Aww, tab closed. ");
 });

 socket.on('some stuff', function(){
     console.log("Did it work? Idk.");
 });


});

App 只是一个无关紧要的服务器。当我运行它时,唯一有效的部分是选项卡打开选项卡关闭部分。当我打开 localhost 并继续时,它会在 Windows 控制台中显示“yay tab opens”。 (当我打开更多标签时,它会为我打开的每个标签显示该消息)。当我关闭标签时,它会为我关闭的每个标签显示 aww 标签已关闭消息。

但是当我尝试添加自己的功能时,它并不关心登录。我意识到我还没有对那个功能做任何事情,但我稍后会需要它。所以我想知道为什么它没有记录它。断开连接有效,但“某些东西”不起作用。为什么不呢?

【问题讨论】:

标签: javascript node.js sockets socket.io


【解决方案1】:

如果您希望您的客户端发回消息,您必须致电emit

// client
socket.emit('some stuff', {my:data});

// server
socket.on("connection", function() {
    ...

    socket.on("some stuff",function(data){
        console.log(data)
    );
});

这个过程当然可以颠倒过来,这样你就可以用你自己的函数将数据从服务器发送到客户端

【讨论】:

  • 谢谢!另外,如果我试图将该数据传递到该 socket.on 函数中的另一个函数,我该怎么做?我正在尝试做 db.serialize(function(data)//do some db stuff 然后 {console.log(data);}),但它说数据未定义。即使在我将它传递给该函数之前,它也可以很好地记录数据。并在数据库中将自身存储为 null。
  • 我不熟悉 db.serialize 函数。但请注意,所有变量都称为数据。也许有名字冲突?
猜你喜欢
  • 1970-01-01
  • 2021-07-11
  • 1970-01-01
  • 1970-01-01
  • 2020-10-17
  • 2018-10-06
  • 1970-01-01
  • 1970-01-01
  • 2017-07-17
相关资源
最近更新 更多