SkillAgentSearch skills...

Jschat

JSON-based chat that has web and console clients, and a server

Install / Use

/learn @alexyoung/Jschat
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

!http://github.com/alexyoung/jschat/raw/8c11578439770962d86d6444d0c159cfb2affbcd/http/public/images/jschat.gif!

JsChat is a chat system. It has an easy to learn JSON protocol, an ncurses client, a web app, and a server. You can try it right now on "jschat.org":http://jschat.org.

JsChat is similar to IRC, but it's a fundamentally simpler system.

The web app has lots of interesting features:

  • IRC-like commands: /names, /name new_name (/nick works too), /clear, /lastlog
  • It's pretty tiny; it's built with "Sinatra":http://www.sinatrarb.com and "Prototype":http://prototypejs.org
  • Auto-linking: pasting an image displays it inline, youtube and vimeo videos will appear as well
  • Last messages are displayed on join: the last 100 messages are displayed, so you don't feel lost when you join a room
  • Tab completion!

!http://dl.getdropbox.com/u/221414/blogs/jschat.png!

h3. Installation

You can install with rubygems:

<pre>gem install jschat</pre>

Then run <code>jschat-server</code> and <code>jschat-client</code> to try out the console client locally.

To try out the web client, run <code>jschat-web</code> and visit "http://localhost:4567":http://localhost:4567.

h3. Ruby Library Requirements

These gems are required by JsChat:

  • eventmachine
  • ncurses (for the client)
  • json

h3. Usage

  • Run the server with <em>./server.rb</em>
  • Connect a client with <em>./client.rb</em>

The web app must be run alongside the server. The web app must be started in production mode:

<code>http/jschat.rb -e production</code>

The web app currently has no database dependencies, it's a wrapper that links cookies to JsChat server proxies. You can run it on port 80 by configuring Rack or an Apache proxy. I have Apache set up this way on "jschat.org":http://jschat.org.

h3. Configuration Files

These are the default locations of the configuration files. You can override them with <code>--config=PATH</code>:

  • Client: <code>~/.jschat/config.json</code>
  • Server: <code>/etc/jschat/config.json</code>

The web app will use the same configuration file as the server so it can find out where the server is.

The file format is JSON, like this:

<pre> { "port": 3001 } </pre>

h3. Server Configuration Options

<pre> { "port": integer, "ip": "string: IP address to bind to", "tmp_files": "string: path to tmp files (including PID file)" } </pre>

h3. Client Commands

  • Change name or identify: <code>/nick name</code>
  • Join a room: <code>/join #room</code>
  • Join a room (alias): <code>/j #room</code>

h3. Protocol Design

The protocol is designed to be as close to executable JSON as possible, so clients and servers are simple to implement.

Look at <em>client.rb</em> <code>JsChat::Protocol</code> to see what I mean.

h3. Hey, this is like Campfire!

I love Campfire and I didn't intend for JsChat to compete with it. JsChat is just a fun project, it doesn't offer Campfire's business-friendly interface, file hosting, transcripts and Basecamp integration.

h3. Credits

JsChat was created by "Alex Young":http://alexyoung.org for "Helicoid":http://helicoid.net. A growing group of friends are helping out:

  • "nickmartini":http://github.com/nickmartini
  • "gabrielg":http://github.com/gabrielg
  • "Simon Starr":http://github.com/sstarr
  • Kevin Ford
  • "sekrett":http://github.com/sekrett

If you'd like to contribute, send "alexyoung":http://github.com/alexyoung a message on GitHub.

View on GitHub
GitHub Stars202
CategoryDevelopment
Updated7d ago
Forks32

Languages

JavaScript

Security Score

95/100

Audited on Mar 27, 2026

No findings