lua сериализировать массив для UDP - PullRequest
1 голос
/ 01 мая 2020

Я пытаюсь отправить пару фрагментов данных через udp через клиентский скрипт lua на сервер node.js.

Строка var, содержащая строку, передается функции. Внутри функции создается массив для добавления еще 2 строк, идентификаторы которых определены вне функции, которая будет использоваться на принимающей стороне для определения места назначения сообщения.

Я подтвердил, что все 3 переменные определены внутри функции. Затем я создаю массив bossMsg и пытаюсь отправить его через sendto (). Я считаю, что именно здесь происходит ошибка, потому что мне нужно сериализовать массив, но читая информацию, мне все еще неясно, как это сделать. Разве нет простого способа сериализации данных, чтобы их можно было отправить через sendto ()?

Заранее благодарен за любую помощь.

PandaBoss.sendBossMessage = function(msg)

    bossMsg = {msg, g_ID, c_ID}
    socket.try(PandaBoss.UDPSendSocket:sendto(bossMsg, ip, port))

end

1 Ответ

1 голос
/ 01 мая 2020

sendto отправляет датаграмму на указанный IP-адрес и номер порта. Датаграмма представляет собой строку с содержимым дейтаграммы.

Таким образом, вы должны сериализовать bossMsg в строку. Самый простой способ - сериализовать его до JSON. Как то так:

-- https://github.com/rxi/json.lua
json = require "json"

PandaBoss.sendBossMessage = function(msg)

    bossMsg = {msg, g_ID, c_ID}
    socket.try(PandaBoss.UDPSendSocket:sendto(json.encode(bossMsg), ip, port))

end
...