Go-random-chat - Fast and scalable real-time random chat written in go

Go Random Chat

Fast and scalable real-time random chat written in go.

Features:

  • Real-time communication and efficient websocket handling using Melody.
  • Stateless chat servers with the help of Redis Pub/Sub.
    • We are not using Redis Stream here since at-most-once delivery is enough for transient messages. Thus, there is chance of data loss during matching and chatting stages.
    • If you want at-least-once delivery for message fan-out, please consider using brokers such as NATS and Kafka. The following examples show how to interact with these brokers using go client.
  • High performance and linear scalability with the help of Redis Cluster.
  • User Matching with idempotency.
  • Responsive web design.

Usage

./run.sh run

This will spin up all services declared in docker-compose.yaml. Visit localhost and you will see the application home page.

Environment variables:

  • HTTP_PORT: Opened port of HTTP server
  • REDIS_PASSWORD: Redis password
  • REDIS_ADDRS: Redis node addresses
  • REDIS_EXPIRATION_HOURS: The expiration of all Redis keys (in hour). Default: 24
  • MAX_ALLOWED_CONNS: Max allowed connections to the server. Default: 200
  • MAX_MSGS: Max number of messages in a channel. Default: 500

Screenshots

Owner
Hao-Ming, Hsu
Keep it smart and simple.
Hao-Ming, Hsu
Similar Resources

Walrus 🕑 Real-time event streaming platform built on top of gRPC streams

Walrus 🕑 Real-time event streaming platform built on top of gRPC streams

Walrus 🕑 Real-time event streaming platform built on top of gRPC streams Table of Contents About the project Built With How it works Getting Started

Sep 24, 2022

Schema-free, document-oriented streaming database that optimized for monitoring network traffic in real-time

Basenine Schema-free, document-oriented streaming database that optimized for monitoring network traffic in real-time. Featured Aspects Has the fastes

Nov 2, 2022

Tcp chat go - Create tcp chat in golang

TCP chat in GO libs Go net package and goroutines and channels tcp tcp or transm

Feb 5, 2022

Ephemeral One Time/Build-Time gRPC TLS PKI system.

PkiSauce Ephemeral Build Time TLS PKI saucing for your intra services GRPC (or not) communications. Description A simple attempt to avoid deploying co

Jul 4, 2022

A gRPC and WS voice chat server written in Go.

VoGRPC Voice over gRPC A small WS and gRPC server, designed to support voice messaging. Progress so far: WS + Socket.io support Roadmap Database desig

Nov 4, 2021

Fast time-series data storage server accessible over gRPC

tstorage-server Persistent fast time-series data storage server accessible over gRPC. tstorage-server is lightweight local on-disk storage engine serv

Sep 14, 2022

Go package provides a fast lookup of country, region, city, latitude, longitude, ZIP code, time zone, ISP, domain name,

IP2Location Go Package This Go package provides a fast lookup of country, region, city, latitude, longitude, ZIP code, time zone, ISP, domain name, co

Jan 8, 2023
Comments
  • Kubernetes Manifest Files

    Kubernetes Manifest Files

    Hi,

    Thanks! This is a really helpful chat service. I want to deploy this service on a kubernetes cluster, so I am looking for Kubernetes manifest files for each of the microservices (if you had implemented any). If not, can you point me to how can I start writing them on my own?

    I tried to use kompose to convert the docker-compose.yaml file to kubernetes manifest files for each service but that gives several errors such as ImagePullBackOff, CrashLoopBackOff etc.

    Thanks!

A modern, fast and scalable websocket framework with elegant API written in Go
A modern, fast and scalable websocket framework with elegant API written in Go

About neffos Neffos is a cross-platform real-time framework with expressive, elegant API written in Go. Neffos takes the pain out of development by ea

Jan 4, 2023
go-chat is a gRPC based chat CLI written in golang for command line lovers
go-chat is a gRPC based chat CLI written in golang for command line lovers

go-chat go-chat is a gRPC based chat CLI written in golang for command line lovers. This CLI allows you to chat with your friends without leaving the

Oct 14, 2022
PinGo is a standalone and feature-rich tool for common IP-based reachability checking tasks. Ping or Trace and Observe in real-time the statistics.

pingo As a network champion from designing and implementing to troubleshooting large scale networks - I know that is usually not easy for administrato

Sep 26, 2022
A Realtime API Gateway used with NATS to build REST, real time, and RPC APIs, where all your clients are synchronized seamlessly.
A Realtime API Gateway used with NATS to build REST, real time, and RPC APIs, where all your clients are synchronized seamlessly.

Realtime API Gateway Synchronize Your Clients Visit Resgate.io for guides, live demos, and resources. Resgate is a Go project implementing a realtime

Dec 31, 2022
Generate HTTP load and plot the results in real-time
Generate HTTP load and plot the results in real-time

ali A load testing tool capable of performing real-time analysis, inspired by vegeta and jplot. ali comes with an embedded terminal-based UI where you

Jan 6, 2023
SubCenter is a middleware that integrate task subscriptions and real-time push

Subscription Center SubCenter是一个集成各种任务并进行实时推送的中间件,本身不提供数据与推送服务。

Oct 31, 2022
Client - Server TCP Chat For String Messages And Random Files

GoChat Client - Server TCP Chat For String Messages And Random Files GoChat is a chat for string messages and random files using Golorem by Derek A. R

Sep 29, 2021
Simple, fast and scalable golang rpc library for high load

gorpc Simple, fast and scalable golang RPC library for high load and microservices. Gorpc provides the following features useful for highly loaded pro

Dec 19, 2022
Fast and Scalable RPC Framework

Rony (Fast and Scalable RPC Framework) About Rony lets you create a clustered aware service easily. Checkout Wiki Performance Rony is very fast and wi

Nov 17, 2022
Real-time HTTP Intrusion Detection
Real-time HTTP Intrusion Detection

teler Real-time HTTP Intrusion Detection Contribute · What's new · Report Bug · Request Feature teler is an real-time intrusion detection and threat a

Jan 5, 2023