Elephant.io + Socket.io返回[object Object]

时间:2015-12-18 20:31:06

标签: php symfony socket.io

我试图在symfony2应用上与Elephant.io(Elephantio捆绑)和Socket.io进行实时聊天。

socket.io服务器和我的symfony应用程序之间的连接运行良好但是当我尝试将数据传递给socket.io时,它返回 [object Object]

我这样做:

#Config.yml
nc_elephant_io:
    clients:
        default:
            connection: http://localhost:3006
            version: 1.x
        socketio_key:
            connection: http://localhost:3000
            version: 1.x

我的控制器

public function indexAction()
{
    $client = $this->get('elephantio_client.socketio_key');
    $elephantIOClient = $client->getElephantIO();

    $elephantIOClient->initialize();
    $elephantIOClient->emit('chat message', ['msg' => 'bar']);
    $elephantIOClient->close();

    return $this->render('default/index.html.twig');
}

我的server.js

var io = require('socket.io').listen(3000);

io.on('connection', function(socket){
    console.log('a user connected');

    socket.on('chat message', function(msg){
        console.log('message: ' + msg);
    });

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

当我刷新索引页面时,它会返回

  

用户已连接

但我的" msg"数据在这里宣布

  

$ elephantIOClient->发出('聊天消息',[' msg' =>' bar']);

未呈现或未传递给socket.io并返回

  

用户已连接

     

消息:[object Object]

     

用户已断开连接

我已经阅读过有关此问题的主题,但从未使用过php / elephant.io实现。

有人已经遇到过这个问题,或者你有什么想法可以解决这个问题吗?

感谢。

1 个答案:

答案 0 :(得分:2)

很抱歉迟到的回复但是因为我在我的项目中处理socket.io和elephant.io而来到这里。 无论如何,您的连接是完美的,因为您正在客户端console.log('message: ' + msg);中记录对象,结果是[object Object]。尝试使用.运算符来获取实际数据。

socket.on('chat message', function(msg){  
   console.log('message: ' + msg.msg);
                               //^^^^-- here since you are sending your object as "msg" from server
}