В Kotlin нельзя передавать данные в виде отдельных переменных на сервер сокетов. - PullRequest
0 голосов
/ 25 августа 2018

Из моего приложения, написанного Котлиным:

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 только на сервере, тик в это время становится нулевым.

Я также пытался использовать аргументы как JSONObject и Array . Оба они потерпели неудачу. Он отправил тип объекта и тип java.string на сервер.

Из всплывающего справочника я могу излучать тремя способами

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

Примечание. Код сервера правильный, поскольку я могу отправлять данные в виде двух переменных из моей версии ios на сервер.

1 Ответ

0 голосов
/ 25 августа 2018

На основе кода , socket.emit заключает args в JSONArray, так что, как вы его здесь назвали, на самом деле получится JSONArray внутри JSONArray (который может учитывать выходные данные на сервере).

Если вместо этого вы используете первую сигнатуру, вы можете фактически передать аргументы прямо так:

socket.emit("join_game", uid, tic)

На базовом уровнеключевое слово vararg означает, что вы можете передать любое количество аргументов вместо одного «аргумента» (в данном случае args).Более подробную информацию об этой концепции можно найти здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...