Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/seaofvoices/crosswalk-channels
A crosswalk shared module to send data from the server to clients
https://github.com/seaofvoices/crosswalk-channels
Last synced: 3 months ago
JSON representation
A crosswalk shared module to send data from the server to clients
- Host: GitHub
- URL: https://github.com/seaofvoices/crosswalk-channels
- Owner: seaofvoices
- License: mit
- Created: 2023-11-15T03:51:05.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-20T15:31:16.000Z (3 months ago)
- Last Synced: 2024-11-20T16:28:57.003Z (3 months ago)
- Language: Lua
- Size: 57.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-luau - `crosswalk-channels` - channels?label=) | (Roblox)
- awesome-luau - `crosswalk-channels` - channels?label=) | (Roblox)
README
[![checks](https://github.com/seaofvoices/crosswalk-channels/actions/workflows/test.yml/badge.svg)](https://github.com/seaofvoices/crosswalk-channels/actions/workflows/test.yml)
![version](https://img.shields.io/github/package-json/v/seaofvoices/crosswalk-channels)
[![GitHub top language](https://img.shields.io/github/languages/top/seaofvoices/crosswalk-channels)](https://github.com/luau-lang/luau)
![license](https://img.shields.io/npm/l/crosswalk-channels)
![npm](https://img.shields.io/npm/dt/crosswalk-channels)# Channels
A crosswalk shared module to easily send data **one way** from the server to client(s). Values can be sent to individual players or to all players.
**IMPORTANT**
This module will make use of `PlayerGui` to store instances, so to prevent them from being deleted when the character reloads, you must disable the `ResetPlayerGuiOnSpawn` property of `StarterGui`. Disable this property by running this line in the command bar:
```lua
game.StarterGui.ResetPlayerGuiOnSpawn = false
```# Installation
## Using the npm package
Add `crosswalk-channels` in your dependencies:
```bash
yarn add crosswalk-channels
```Or if you are using `npm`:
```bash
npm install crosswalk-channels
```## Roblox asset
Put the Channels.rbxm file inside your crosswalk **shared modules** folder.
# License
This plugin for crosswalk is available under the MIT license. See [LICENSE.txt](LICENSE.txt) for details.
# API
## Server API
### Send
Publish values on a channel that any player can listen to.
```lua
Channels.Send(channelName: string, value: unknown)
```### SendLocal
Publish values on a channel **for a single player**.
```lua
Channels.SendLocal(player: Player, channelName: string, value: unknown)
```### Bind
Listen for changes on a channel (using `Channels.Send`).
```lua
Bind(channelName: string, func: (T) -> ()): () -> ()
```- Listen to data sent on global signals (sent to all players with `Send`).
- The returned function disconnects from the channel### BindPlayer
Listen for changes on a local channel (using `Channels.SendLocal`).
```lua
BindPlayer(channelName: string, func: (Player, T) -> ()): () -> ()
```- Listen to data sent on local signals (sent to individual players with `SendLocal`).
- The returned function disconnects from the channel## Client API
### Bind
Listen for changes on a channel.
```lua
Bind(channelName: string, func: (T) -> ()): () -> ()
```- Each client can connect to values that are sent to its own player or to all players.
- The returned function disconnects from the channel```lua
local disconnect = Channels.Bind("timer", function(newValue)end)
-- ... when needed, you can disconnect the callback by calling the `disconnect` function
disconnect()
```