Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/overtorment/noobhub
🌐🔥 Network multiplayer and messaging for CoronaSDK, Moai, Gideros, LÖVE & Defold
https://github.com/overtorment/noobhub
corona-sdk gideros love2d lua moai networking nodejs pubsub wtfpl
Last synced: 1 day ago
JSON representation
🌐🔥 Network multiplayer and messaging for CoronaSDK, Moai, Gideros, LÖVE & Defold
- Host: GitHub
- URL: https://github.com/overtorment/noobhub
- Owner: Overtorment
- Created: 2012-08-04T10:22:40.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2024-07-16T11:19:58.000Z (5 months ago)
- Last Synced: 2024-12-22T04:05:13.277Z (1 day ago)
- Topics: corona-sdk, gideros, love2d, lua, moai, networking, nodejs, pubsub, wtfpl
- Language: Lua
- Homepage:
- Size: 128 KB
- Stars: 324
- Watchers: 40
- Forks: 51
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# NoobHub
[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)
OpenSource multiplayer and network messaging for CoronaSDK, Moai, Gideros, LÖVE & Defold
Battle-tested and production ready. Handling thousands of CCU (concurrent users), serving hundreds of thousands multiplayer games daily, routing hundreds of messages per second, with months of uptime.
- Connections are routed through socket server with minimum latency, ideal for action games.
- Simple interface. Publish/subscribe paradigm in action.
- Server written on blazing fast Nodejs.
- Zero dependency. Works out of the box, no NPM ecosystem required. (for websocket bridge relies on `ws` module, read below)
- Socket connections, works great through any NAT (local area network), messages delivery is reliable and fast.
- Low CPU and memory footprintRepo includes server code (so you can use your own server) and CoronaSDK/Moai/Gideros/LÖVE client. More clients to come.
You can test on my server, credentials are hardcoded in demo project!Lua code may serve as an example of how LuaSocket library works.
## How to use it
START SERVER
```bash
$ nodejs node.js
```To make use of the websocket bridge, uncomment wsPort in the config.
If so, make sure to do `npm install` as well.
These are useful to serve browser clients. Irrelevant otherwise.INITIALIZE
```lua
hub = noobhub.new({ server = "127.0.0.1"; port = 1337; });
``````js
const hub = noobhub.new({ server: '127.0.0.1', port: 2337 });
```SUBSCRIBE TO A CHANNEL AND RECEIVE CALLBACKS WHEN NEW JSON MESSAGES ARRIVE
```lua
hub:subscribe({
channel = "hello-world";
callback = function(message)if(message.action == "ping") then
print("Pong!")
end;end;
});
``````js
hub.subscribe({
channel: 'hello-world',
callback: (data) => {
console.log('callback', data);
}
});
```SAY SOMETHING TO EVERYBODY ON THE CHANNEL
```lua
hub:publish({
message = {
action = "ping",
timestamp = system.getTimer()
}
});
``````js
hub.publish({
action: 'ping',
timestamp: Date.now()
});
```## Clients
- CoronaSDK
- Gideros
- Moai
- LÖVE
- Node.js
- PHP (debug console only)
- JS / Browser## Tests
Simple acceptance test uses Nodejs client to test the server itself:
```bash
$ ./run-tests.sh
starting Noobhub server...
NoobHub on :::1337
running tests...
tests ok
```## Getting ready for production use
If you expect more than 1000 concurrent connections, you should increase limits on your server (max open file descriptors,
max TCP/IP connections) and optionally fine-tune your server's TCP/IP stack.
To make sure server process stays alive you might want to use tools such as forever.js or supervisord.## Authors
- Igor Korsakov
- Sergii Tsegelnyk## Licence
[WTFPL](http://www.wtfpl.net/txt/copying/)
## Official discussion thread
- [old] http://developer.coronalabs.com/code/noobhub
- [new] http://forums.coronalabs.com/topic/32775-noobhub-free-opensource-multiplayer-and-network-messaging-for-coronasdk