Socket.IO Emit Object Javascript

时间:2015-05-04 13:00:28

标签: javascript node.js socket.io cocos2d-js

无法从客户端向服务器发出对象.. 这是我客户端的代码

var foo = {
name: xxx,
type: mytype
};
cc.log(foo);
socket.emit('test', foo);

ERROR

JS: [object Object]
JSB SocketIO.emit method called
jsb: ERROR: File /Users/xxx/Sites/socketIO/frameworks/js-bindings/bindings/manual/network/jsb_socketio.cpp: Line: 272, Function: js_cocos2dx_SocketIO_emit
Error processing arguments

1 个答案:

答案 0 :(得分:1)

你不能拿一个javascript对象" foo"作为第二个参数。正如在SocketIO.h中定义的那样:

void emit(std::string eventname, std::string args);

第二个参数是一个字符串。 Cocos2d-js无法转换javascript对象" foo"到std :: string自动。但是,cocos2d-js可以通过jsval_to_std_string()将javascript字符串转换为std :: string。

如果要发送对象,可以将对象作为字符串发送,并在接收时进行解码。