Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/floatinghotpot/casino-server
:fire: An online poker game server powered by Redis, node.js and socket.io
https://github.com/floatinghotpot/casino-server
casino game javascript poker poker-game-server server texasholdem
Last synced: 4 days ago
JSON representation
:fire: An online poker game server powered by Redis, node.js and socket.io
- Host: GitHub
- URL: https://github.com/floatinghotpot/casino-server
- Owner: floatinghotpot
- License: mit
- Created: 2014-12-12T14:14:38.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2020-04-26T10:41:29.000Z (over 4 years ago)
- Last Synced: 2024-12-14T23:03:17.303Z (11 days ago)
- Topics: casino, game, javascript, poker, poker-game-server, server, texasholdem
- Language: JavaScript
- Homepage:
- Size: 711 KB
- Stars: 1,064
- Watchers: 97
- Forks: 472
- Open Issues: 29
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# casino-server #
[![npm version](https://badge.fury.io/js/casino-server.svg)](http://badge.fury.io/js/casino-server)
[![Build Status](https://travis-ci.org/floatinghotpot/casino-server.svg)](https://travis-ci.org/floatinghotpot/casino-server)
[![NPM](https://nodei.co/npm-dl/casino-server.png?height=3)](https://nodei.co/npm/casino-server/)
An online poker game server powered by redis, node.js and socket.io
![A](https://github.com/floatinghotpot/casino-server/raw/master/wwwsrc/img/4_14.png) ![A](https://github.com/floatinghotpot/casino-server/raw/master/wwwsrc/img/3_14.png)
![A](https://github.com/floatinghotpot/casino-server/raw/master/wwwsrc/img/2_14.png)
Game rules supported:
- [x] Chat Room (聊天室)
- [x] Jinhua (诈金花/三张牌)
- [x] Texas Holdem (德州扑克)
- [ ] Fight Landlord (斗地主)
- [ ] Blackjack (21点)Features:
- [x] Cross-platform: powered by node.js, easy to deploy on various platforms.
- [x] Scalable: using Redis as message bus and data storage.
- [x] Open architecture: with Redis as the message bus, easy to interact and extend.
- [x] Cluster: using PM2, sticky session, and socket.io-redis.
- [x] WebSocket protocol: come with javascript client API and web-based demo.
- [x] Event logger for server events and user actions.TODO List:
- [ ] Client API for Unity3D (C#, support mono/.NET2.0)
- [ ] Payment gateway callback URL.
- [ ] Admin Portal.
- [ ] Load balancing: using NginX, or auto handled if deployed to Amazon Cloud.# Architecture #
![Architecture](https://github.com/floatinghotpot/casino-server/raw/master/docs/architecture.png)
## Required ##
* Redis
Redis is an open source, BSD licensed, advanced key-value cache and store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets, sorted sets, bitmaps and hyperloglogs.
[Download](http://redis.io/download)
* node.js / npm
Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.
[Download](http://nodejs.org/download)
* PM2 (production & cluster)
PM2 is a production process manager for Node.js applications with a built-in load balancer. It allows you to keep applications alive forever, to reload them without downtime and to facilitate common system admin tasks.
[Read More](https://github.com/Unitech/pm2)
# Installation #
* Installing globally and run as service with PM2:
```bash
[sudo] npm install pm2 -g
[sudo] npm install casino-server -g# run redis-server first
redis-server &# run as service and cluster mode
pm2 start `which casino-server` -i 0
```* Installing as a node app, and run in current folder:
```bash
git clone https://github.com/floatinghotpot/casino-server.git casino
cd casino
npm install
# sudo npm install -g gulp
# gulp build
node bin/casino-server [options]
```Now you can visit http://localhost:7000, it's a web-based game client for testing and demo purpose.
```bash
# open a browser to access the test web page
open http://localhost:7000/
```# Available Options: #
-p Port to use (defaults to 7000)
-h Host address to use (defaults to 0.0.0.0)
-r Address of Redis server (defaults to 127.0.0.1:6379)
# Tools #
With Redis as the message bus, it's very easy for tools to work with the open architecture.
## Event Logger ##
Start the event logger to monitor the events:
```bash
bin/logger.js
```Or, log the events into log file:
```bash
bin/logger.js -o ./tmp/casino.log
```
# See Also* [socket.io for Unity3D](https://github.com/floatinghotpot/socket.io-unity), is a socket.io client library for Unity3D. You can develop casino games with Unity3D, and using this library to connect to this casino server.
# Credits #
This poker game server is created by Raymond Xie, published under MIT license.
It can be used for FREE, but be aware that:
* It is provided as it is. (Not a mature commercial product, may be incomplete, or even lots of bugs)
* We will mainly focus on our own needs.
* You can propose wish for new features, but don't rely on us to implement them. Instead of waiting for new features, welcome join us to implement them.
* You need take your own risk, including that you need find answers from reading code instead of easily asking only. :PIf you are interested in this project, you can contribute in any of following aspects:
* Simply "Star" it.
* Use it or test it, report bugs or even send pull request of patches.
* Add better HTML5 demo client.
* Add new poker game rules.
* Add client APIs in other languages (like C# for Unity, Java, Objective-C, C/C++, etc.)
* Help us write documentation, if your English is good.