【问题标题】:Working with objects in socket.io在 socket.io 中使用对象
【发布时间】:2015-09-30 07:24:59
【问题描述】:

这是我的 app.js

redis.on('message', function(channel, message) {

    //console.log('Redis: Message on ' + channel + ' received!');
    //
    //message1 = JSON.parse(message).object;
    //console.log(message1);
    //console.log(message1.question_model_user_id);

    message = JSON.parse(message);
    io.emit('new', message);

});

console.log('user connected');

socket.on('disconnect', function(){
    console.log('user disconnected');
});

现在是我的客户端脚本

var socket = io('http://localhost:3000');

socket.on('new',function(data){
    $.each( data, function( key, value ) {
        console.log(value);
      //$.each( value, function( key, value1 ) {
      //    $.each( value1, function( key, value3 ) {
      //        console.log(key);
      //    });
      //});
    });

现在用户 A 有一个对象,用户 B 有 0 个对象。每当 A 刷新页面 B 应该得到一个对象,但我会得到许多对象,因为如果用户 A 只刷新页面一次,相同的对象会增加 +1。

【问题讨论】:

  • 欢迎提问。您的服务器代码上的redit 是什么?我们需要上下文来理解您的意思。
  • 哦,我正在通过 redis subscribe 在测试通道上发送对象,所以如果订阅 redis.on 消息将运行用户 a 有一个对象,该对象有 8 个数组,b 现在有 0 个对象a refresh b 现在会得到一个对象,如果 b 现在刷新 a 得到空对象,如果 a refresh b 得到 2 个对象?
  • 问题已经解决,有人告诉我 io.emit 将对象发送到所有连接的客户端,我使用 socket.emit 现在每次刷新页面时对象都没有得到 +1 谢谢大家

标签: node.js sockets websocket redis socket.io


【解决方案1】:

使用 io.socket 代替 io.emit 来发射对象一次

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多