1
0
Fork
You've already forked lichat-serverlib
0
Tools to help build a conforming server for the Lichat chat protocol
  • Common Lisp 100%
Find a file
2025年08月21日 16:40:31 +02:00
docs Doc update 2025年08月21日 16:40:31 +02:00
.gitattributes Update license to zlib. 2019年06月22日 10:25:32 +02:00
connection-maintenance.lisp Update copyright 2023年07月03日 19:01:42 +02:00
documentation.lisp Update copyright 2023年07月03日 19:01:42 +02:00
emotes.lisp Update copyright 2023年07月03日 19:01:42 +02:00
LICENSE Update copyright 2023年07月03日 19:01:42 +02:00
lichat-serverlib.asd Update copyright 2023年07月03日 19:01:42 +02:00
package.lisp Update copyright 2023年07月03日 19:01:42 +02:00
README.md Remove close-connection restart as it too strongly implies single-threadedness. 2017年07月21日 09:48:15 +02:00
server-objects.lisp Update copyright 2023年07月03日 19:01:42 +02:00
server-operations.lisp Update copyright 2023年07月03日 19:01:42 +02:00
update-handlers.lisp Update copyright 2023年07月03日 19:01:42 +02:00

About Lichat-Serverlib

This is an implementation of the server-side protocol part of the Lichat protocol. It provides an extensible, transport-agnostic implementation that can be used to base a functional server on. All that the real server needs to take care of is the underlying connection establishment and reading.

You do not need this library if you are looking to implement a client. You don't need it if you're looking to implement a server either, but it will take care of a large part of the implementation tasks for you if you do use it.

Implementing an Overarching Server

In order to implement an actual server, you will want to do the following:

  • Subclass at least server and connection.
  • Provide functions to start a listener on a server instance.
  • For each client that connects, create a connection object.
  • Provide functions to repeatedly read updates from a connection and send them to process.
  • Supply an after method on teardown-connection that closes the connection to the client properly.
  • Provide a primary method for send specialised on your connection subclass that handles the actual wire transmission of an update.
  • Handle potential synchronisation or mutual-exclusion issues to users, channels, profiles, and connections on the server if your server is multi-threaded.

For a simple illustrative example, see the lichat-tcp-server.

Also See