Total Pageviews

Thursday 18 February 2016

用elisp写的聊天室程序:el-webchat

这是一款简易聊天室实现.

screen-1.jpg
目前提供了一个面向互联网的服务器. 该服务器使用多聊天室的使用方式:
  • IP: 106.185.33.31
  • PORT: 8000 (多聊天室方式入口)
  • PORT: 8002 (单聊天室方式入口)
欢迎大家测试

Requirment

服务端

  • 使用package安装simple-httpd

客户端

  • 使用package安装htmlize
  • 使用package安装popup

单一聊天室的使用方法

最简单的使用方式是启动一个webchat-server,让所有人都在同一个聊天室内交流.

启动server端

webchat-server.el为实现server端的代码,其支持以emacs script的方式直接调用. 方式为:
# 执行该文件,带一个端口参数,表示该服务监听哪个端口
emacs --script webchat-server.el 8000
若为windows环境,则可以执行以下命令
emacs.exe --script webchat-server.el 8000

启动client端

  1. 加载client端实现文件
    (require 'webchat-client-push)
        
  2. 调用命令 M-x webchat-talk
  3. 在弹出的*webchat-talk* buffer中输入内容,并按C-RET发送内容. 聊天内容会显示在*webchat-content*中

多聊天室的使用方式

在webchat-server之上,封装了一层webchat-server-dispatcher,使得交流着可以根据不同的主题进入不同的聊天室.

启动server端

  1. 加载webchat-server-dispatcher.el或webchat-server-dispatcher-push.el
    (require 'webchat-server-dispatcher)
        
  2. 调用命令M-x webchat-server-dispatcher,并输入监听端口

启动client端

  1. 加载client端实现文件
    (require 'webchat-client-push)
        
  2. 调用命令 M-x webchat-client. 在选择channel时可以输入一个不存在的channel,webchat-server-dispatcher会自动分配新服务进程为该channel提供服务.
  3. 在弹出的*webchat-talk* buffer中输入内容,并按C-RET发送内容. 聊天内容会显示在*webchat-content*中

配置说明

webchat-client

可以通过 M-x customize-group <RET> webchat-client 来配置
  • `webchat-client-display-image’决定了是否显示聊天内容中图片链接所指向的图片
    图片链接需要用[[]]括住才会显示
  • `webchat-client-content-buffer’决定了显示聊天内容的那个buffer的名称
  • `webchat-client-talk-buffer’决定了输入聊天内容的那个buffer的名称
  • `webchat-client-notification-by-sound’决定了当有新消息时,是否用声音通知
  • `webchat-client-notification-sound-file’指定了收到消息时,通知的声音文件(wav,或au格式). 若为nil则直接调用beep函数通知
  • `webchat-client-desktop-notification’指定了收到消息时,是否使用桌面通知功能.

Features

  • [X] 可以在客户端自由添加channel
  • [X] 高亮代码
    由于webchat-mode继承至org-mode,因此只需要将代码写入#+BEGIN_SRC … #+END_SRC中即可实现高亮代码screen3.jpeg
  • [X] 显示图片
    webchat能够显示http url所指定的图片.screen2.jpeg
  • [X] 提供方法上传图片
    webchat提供了方法上传本地图片到服务器上,并会将服务器上图片的网址插入到聊天窗口中.screen4.jpeg
  • 当收到消息时,可以设置声音提醒
  • 当收到消息时,若支持dbus,则可以启用桌面提醒功能
    desktop-notification.png
from https://github.com/lujun9972/el-webchat