8000 GitHub - pzingg/swift-chat
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

pzingg/swift-chat

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

swift-chat

A simple chat made to play with Distributed actors.

Run

Swift 5.9 is needed (was playing with new Swift Foundations, although removed in the end).

  1. Install brew install postgresql

  2. Open App/swift-chat.xcodeproj

  3. Configure scheme environment for Frontend node to run a database (DB_USERNAME, DB_PASSWORD and DB_NAME)

  4. Run fronend node either through Xcode schemes or using command line tools. You need to provide info on which node and where you want to start, e.g. frontend --host 127.0.0.1 --port 2550. Additionaly you can start seperate room nodes to play: `room --host 127.0.0.1 --port 2551

  5. Open swift-chat app on device/simulator. Create user and room name, and connect. Open another instance on different device/simulator and connect to the room by entering same name.

TODO:

(no priorities, so no order)

  • Check if actors are cleaned from memory when websocket disconnects.
  • Some database with simple event sourcing.
  • Basic clustering with fault tolerance. Check different scenarios like room node crashes and etc.
  • DATABASE NODE FAILURES ARE NOT HANDLED AT THE MOMENT
  • Currently Event sourcing is not there yet and rudimentary (without state, recovery and snapshoting). Invest some time into this.
  • Interesting to play with Swift OpenAPI generator.
  • Add some basic documentation.
  • Testing—at least covering Room, User and WebSocketConnection actors would be nice.
  • Tracing—debugging is quite hard thing even on a single node. Add Swift Distributed Tracing
  • Improve scalibility and fault tolerance:
    1. Add node discovery logic.
    2. Improve error handling.
  • Spining some example on real device/vps to get more info and for fun :)
  • TBD

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 100.0%
0