2015-05-04 20 views
1

我不能夠從客戶端發出的對象到服務器.. 這裏是我的客戶端代碼Socket.IO的Emit對象中的JavaScript

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 
+0

你可以發射一個字符串嗎? – RafaelKr

+0

@Joriktos是的,我可以發出一個字符串.. –

+0

然後,你可能已經損壞了socket.io客戶端或服務器,或者你的數組中有錯誤。 是console.log(foo)一個有效的對象嗎? – RafaelKr

回答

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。

如果要發送對象,可以將對象作爲字符串發送,並在接收對象時進行解碼。