Back to top


Web based chat software

What is it

Focus is on real time messaging. So you normally only get messages that are submitted while you are logged in.

The Klatschbase server is implemented in Common Lisp and currently requires sbcl, hunchentoot, cl-json, and parenscript. The server provides a REST API (via HTTP using JSON as data format).

The Klatschbase client is written in Javascript, XHTML, and CSS. It uses jQuery, webtoolkit.base64, and json2.js.


After installing it via ASDF and optionally patching hunchentoot with the patch for RFC 2047 compliant HTTP authentication character encoding (CL-RFC2047) you should set hunchentoots default encoding to UTF-8:

(defparameter hunchentoot:*default-content-type* "text/html; charset=utf-8")
(defparameter hunchentoot:*hunchentoot-default-external-format*
  (flexi-streams:make-external-format :utf8))

If you want to have control over the hunchentoot-server, start it yourself. E.g., binding it to the loopback device, port 4242:

(defparameter *hunchentoot*
  (hunchentoot:start-server :address "" :port 4242))

Now start the chat server, using the above started hunchentoot server and /var/www/klatschbase/static/ as path of klatschbase’s static files:

(defparameter *chat-server*
    :hunchentoot-server *hunchentoot*
    :static-files-path #p"/var/www/klatschbase/static/"))

If you do not define a hunchentoot server, a new one is started.

If you do not define the path of the static files, they will not be served by hunchentoot. This makes sense for example when you have hunchentoot running behind an apache or lighttpd that shall serve the static files.


There is a vast amount of software available for chatting in all kind of flavours. E.g., IRC is a well established chat infrastructure. There are a lot of desktop clients for it. There are also web based clients. In mibbit, for example, there is a Java server that relays to an IRC server.