All Projects → Overtorment → Noobhub

Overtorment / Noobhub

🌐🔥 Network multiplayer and messaging for CoronaSDK, Moai, Gideros, LÖVE & Defold

Programming Languages

lua
6591 projects

Projects that are alternatives of or similar to Noobhub

Facil.io
Your high performance web application C framework
Stars: ✭ 1,393 (+437.84%)
Mutual labels:  pubsub, networking
Libzmq
ZeroMQ core engine in C++, implements ZMTP/3.1
Stars: ✭ 7,418 (+2764.09%)
Mutual labels:  pubsub, networking
Emitter
High performance, distributed and low latency publish-subscribe platform.
Stars: ✭ 3,130 (+1108.49%)
Mutual labels:  pubsub, networking
Sock.lua
A Lua networking library for LÖVE games.
Stars: ✭ 121 (-53.28%)
Mutual labels:  love2d, networking
pagkibot
Discord bot for instant Twitch live notifications using Twitch's PubSub API.
Stars: ✭ 25 (-90.35%)
Mutual labels:  pubsub
event-bus
Typesafe cross-platform pubsub event bus ensuring reliable communication between fragments and micro frontends.
Stars: ✭ 15 (-94.21%)
Mutual labels:  pubsub
Brady
A camera library with parallax scrolling and aspect ratios for LÖVE.
Stars: ✭ 50 (-80.69%)
Mutual labels:  love2d
opal
Policy and data administration, distribution, and real-time updates on top of Open Policy Agent
Stars: ✭ 459 (+77.22%)
Mutual labels:  pubsub
Pypcap
pypcap - python libpcap module, forked from code.google.com/p/pypcap, now actively maintained
Stars: ✭ 255 (-1.54%)
Mutual labels:  networking
vmecs
A simple VMess proxy implementation written in C.
Stars: ✭ 28 (-89.19%)
Mutual labels:  networking
pubsubbeat
An Elastic Beat to ingest data from Google Pub/Sub
Stars: ✭ 40 (-84.56%)
Mutual labels:  pubsub
actionizer
Simple pub/sub for data flow like Redux.
Stars: ✭ 21 (-91.89%)
Mutual labels:  pubsub
computer networking a top down approach
Assignments and wireshark labs for Computer Networking: A Top Down Approach 7th Edition
Stars: ✭ 50 (-80.69%)
Mutual labels:  networking
react-bus
A global event emitter for react.
Stars: ✭ 34 (-86.87%)
Mutual labels:  pubsub
90DaysOfDevOps
This repository is my documenting repository for learning the world of DevOps. I started this journey on the 1st January 2022 and I plan to run to March 31st for a complete 90-day romp on spending an hour a day including weekends to get a foundational knowledge across a lot of different areas that make up DevOps.
Stars: ✭ 1,575 (+508.11%)
Mutual labels:  networking
fault
An obstacle avoidance game for Android and iOS.
Stars: ✭ 19 (-92.66%)
Mutual labels:  love2d
clove
A helper library for LÖVE which allows to loads huge amount of assets super-easily 👊
Stars: ✭ 18 (-93.05%)
Mutual labels:  love2d
pulsar-client-node
Apache Pulsar NodeJS Client
Stars: ✭ 88 (-66.02%)
Mutual labels:  pubsub
watermill-http
HTTP Pub/Sub for the Watermill project.
Stars: ✭ 16 (-93.82%)
Mutual labels:  pubsub
Live2LOVE
LÖVE library to show Live2D Cubism models (WIP)
Stars: ✭ 22 (-91.51%)
Mutual labels:  love2d

NoobHub

JavaScript Style Guide

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 footprint

Repo 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

        $ 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

        hub = noobhub.new({ server = "127.0.0.1"; port = 1337; });
const hub = noobhub.new({ server: '127.0.0.1', port: 2337 });

SUBSCRIBE TO A CHANNEL AND RECEIVE CALLBACKS WHEN NEW JSON MESSAGES ARRIVE

        hub:subscribe({
          channel = "hello-world";
        	callback = function(message)

        		if(message.action == "ping")   then
        			print("Pong!")
        		end;

        	end;
        });
hub.subscribe({
  channel: 'hello-world',
  callback: (data) => {
    console.log('callback', data);
  }
});

SAY SOMETHING TO EVERYBODY ON THE CHANNEL

        hub:publish({
            message = {
                action  =  "ping",
                timestamp = system.getTimer()
            }
        });
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:

    $ ./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

Official discussion thread

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].