클라이언트 스크립트
Chain2D.Network
서버와 주고받는 메시지. 양쪽 다 표를 주고받습니다 — 문자열을 건네고 파싱을 창작자에게 떠넘기면 게임마다 같은 파서를 다시 쓰게 되고, 그중 하나는 반드시 서버와 다르게 읽습니다.
Network.on
선언
Chain2D.Network.on(name: string, handler: (value: any?, raw: string?) -> ())매개변수
| name | string | 서버가 `Network.send` 로 보낼 때 쓰는 이름. `Chain2D.` 로 시작하는 이름은 엔진이 쓰므로 거부됩니다. |
| handler | (value: any?, raw: string?) -> () | 메시지가 올 때마다 불립니다. 첫 인자는 JSON 으로 읽힌 값이고, 읽히지 않았을 때는 `nil` 과 함께 두 번째 인자로 원본 문자열이 옵니다. |
서버가 보내는 한 이름의 메시지를 듣습니다. 온 것이 JSON 이 아니어도 스크립트는 죽지 않습니다 — 창작자가 쓰지 않은 코드가 창작자의 화면을 멈추게 해서는 안 되기 때문에, 읽기에 실패하면 값 대신 원본이 옵니다.
Chain2D.Network.on("chat", function(message, raw)
if message == nil then
warn("서버가 보낸 것을 읽지 못했습니다: " .. tostring(raw))
return
end
print(message.from, message.text)
end)Network.send
선언
Chain2D.Network.send(name: string, value: any?) -> (boolean, string?)매개변수
| name | string | 서버의 `Network.on` 이 듣고 있는 이름. `Chain2D.` 로 시작하면 거부됩니다. |
| value | any? | 보낼 표. 생략하면 빈 표를 보냅니다. JSON 으로 바뀌어 나갑니다. |
반환
(boolean, string?)보냈으면 `true`. 보내지 못했으면 `false` 와 이유가 함께 옵니다.
서버에게 메시지를 보냅니다. 실패는 값으로 돌아옵니다 — 끊긴 연결에 대고 보내는 것은 예외로 다룰 만한 일이 아니라 게임이 흔히 만나는 상태입니다.
언제접속한 뒤(`Chain2D.stage()` 가 `"joined"`)에만. 그 전에 부르면 이유와 함께 거부됩니다.
local ok, why = Chain2D.Network.send("chat", { text = "안녕" })
if not ok then
print("보내지 못했습니다: " .. why)
end