来自我由 Kotlin 编写的应用程序:
var args = JSONArray()
args.put(uid)
args.put(tic)
socket.emit("join_game",args)
从服务器端,代码是:
socket.on('join_game',function(uid, tic){
正如预期的那样,它应该将 uid 和 tic 发送到服务器,但它只将数据作为"{uid},{tic}"发送到服务器中的 uid,此时 tic 变为空。
我还尝试使用 args 作为 JSONObject 和 Array
从指南弹出窗口中,我可以通过3种方式发出
socket.emit(event: String!, vararg args: Any!)
socket.emit(event: String!, args: Array<(out) Any!>!, ack: Ack!)
socket.emit(event: String!, args: Array<(out) Any!>!, ack: ((args:Array<(out) Any!>!) -> Unit)!
我用于我的应用程序的套接字是com.github.nkzawa:socket.io-client:0.3.0
注意:服务器代码是正确的,因为我可以将数据作为 2 个变量从我的 ios 版本发送到服务器。
根据代码,socket.emit
将args
包装成JSONArray
,因此您在此处调用它的方式实际上最终会在JSONArray
内JSONArray
(这可能解释了服务器上的输出(。
相反,如果您使用第一个签名,您实际上可以直接像这样传递参数:
socket.emit("join_game", uid, tic)
在基本层面上,vararg
关键字意味着您可以传递任意数量的参数来代替单个"参数"(在本例中为args
(。有关此概念的更多信息,请参阅此处。