也许IRC即将被淘汰吧,研究的人少,资料更少。为了定制一个简易的多端聊天工具,我研究了一番IRC,并记录于此。

简介

IRC是开源社区比较流行的纯文本即时聊天方案,支持私聊、群聊(频道)。

优点是,无需注册。开源项目,各个平台的客户端都有,虽然样式丑了点。根据IRC协议,很容易制作聊天机器人。

缺点是,只能发纯文本,而且没有远程聊天记录。发送内容有长度限值,不能发送多行文本,单个报文长度为512字节(含IRC命令、用户信息、聊天文本,合计长度)。

使用昵称作为主要用户识别信息,昵称不能重复。昵称最长9个字符。注册后的昵称,认证以后可以将使用该昵称的人踢下线。

公共服务器

  • Freenode 最知名,开源项目基本都在这里有项目频道

客户端

  • HexChat 界面优美,但是聊天界面排版较差,功能较少
  • Pidgin 轻量易于扩展,界面巨丑
  • Empathy 臃肿,比Pidgin好看一些
  • Webchat 网页模式,开箱即用,丑,功能简单
  • Irssi 命令行模式,上手难,但是蛮好用
  • Weechat 命令行模式,功能复杂

以irssi为例

# 以昵称 foo 登录 freenode
irssi -c chat.freenode.net -n foo

连接成功后,如果没有重名,可以注册该昵称。执行以下命令后,去邮箱查看验证信息,按提示操作即可。

/msg NickServ REGISTER your_password your_email@domain.com

邮箱里收到的内容大概如下,在irssi中执行即可

/msg NickServ VERIFY REGISTER foo knpnmlyslgpd

注册以后,使用该昵称登录的话,会提示该昵称已被注册,需要认证才行

/msg NickServ IDENTIFY your_password

加入某个群聊(频道),如#deepin

/join #deepin

如果这个群聊是自己新建的,那么自己就是群主,此时对该群有管理权限。如下可以增删管理员

/mode +o others_nick
/mode -o others_nick

如下可以给群设置密码

/mode +k chan_pass

重进刚刚的群,会失去管理员权限。需要在线的管理员赋予自己权限。可以把ChanServ服务设为该群的管理员,然后由ChanServ恢复自己的管理权限

/msg ChanServ SET #deepin GUARD ON

手动请求ChanServ恢复管理权限

/msg ChanServ OP #deepin foo

设置自动恢复管理权限

/msg ChanServ FLAG +O

剩下的用/help命令即可搞定了

服务器

  • ngIRCd IRC基础服务器
  • Xtheme IRC机器人,如NickServ,ChanServ等。由atheme衍生而来

Xtheme使用方式

  1. 配置ngIRCd并启动
  2. 安装Xtheme

IRC协议

IRC协议逐年完善,其中rfc1459规定了基础的命令。实现该协议基本就能实现一个可用的IRC服务器、客户端了

PhpIrcClient