UNPKG

goban-engine

Version:

This contains the built Go engine that is used by the Goban package. There are no display components in this package, only the logic for playing the game of Go, making it suitable for usage in node.js or other server-side environments.

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";