UNPKG

goban

Version:

[![License: Apache-2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/online-go/goban)

79 lines (78 loc) 3.38 kB
/** * The goban library has built in support for communicating to the * Online-Go.com game server. This is the official implementation * used by the site itself, so it is a good reference if you are making * a third party client. * * All of the communication is done via websockets using simple JSON * messages. * * Messages sent from the client to the server have the following format * * `[command: string, data: any, id?: number]` * * where command is one of the commands listed in the [[ClientToServer]] protocol, * data is the data associated with that command, and id is an optional * request id that will be echoed in a response if a response is requested. * * Messages sent from the server to the client have the format * * `[event_name: string, data: any]` * * or * * `[id: number, data?: any, error?: {code: string, message: string}]` * * where event_name/data is listed in the [[ServerToClient]] protocol, or if * the message is a response to a command sent by the client, the id * and the data for the response. Exactly one response will be sent for * a given command if an id was sent with the request. If no id was sent, * no response will be sent (but subsequent named commands can be sent back * if appropriate). Responses either have data or error set, never both. * * * # Changes from the Socket.IO implementation. * - Several cleanup updates have been made to remove the need for several old * fields and a few messages that are no longer needed. Including these fields * will not cause any problems, but below are notes if you want to clean up * your code. * * - Several cleanup updates have been made that homogenize the type of * fields, namely 0/1 booleans are now true/false booleans and id's are * always numbers. The server still supports coalescing these fields for * backwards compatibility. * * - All authentication is now handled via the `authenticate` message, there * is no longer a need for the various `chat_auth`, `incident_auth`, etc * fields in any of the messages. Those fields are still supported for * backwards compatibility, but if the jwt is provided, they are ignored. * * - The `auth` field in all game and review messages is no longer necessary * or used * * - the `player_id` field in all game and review messages is no longer * necessary or used * * - The `chat/connect`, `incident/connect`, and `notification/connect` * messages have been removed and are an implicitly called by the * `authenticate` message. * * - `chat/pm/close` and `chat/pm/load` now accept a `{ player_id: number }` * object for consistency. Old clients that simply send a number will still work. * * - `remote_storage/sync` now accepts an object `{ from: string }` for * consistency. Old clients that simply send a string will still work. * * - `user/monitor` now accepts an object `{ user_ids: number[] }` for * consistency. Old clients that send raw numeric array will still work. * * - The `cmoves` parameter has been renamed to `conditional_moves` in * `game/conditional_moves/set`. The server still supports the old name * for backwards compatibility. * * @module */ export * from "./ClientToServer"; export * from "./ServerToClient"; export * from "./ClientToAIServer"; export * from "./AIServerToClient";