IM开发(1)-ejabberd服务器搭建

作者: 树下老男孩 | 来源:发表于2015-10-08 17:12 被阅读4350次

    最近项目中需要集成IM功能,市面上有很多的第三方提供im服务,比如环信、融云等,但都有使用限制的地方,如果不使用第三方可以自己去实现一套IM系统,不过一个IM系统涉及到的东西比较多,开发难度较高。另一种选择是使用xmpp,xmpp的优点是有很多的开源实现,比如服务端的ejabberd、Openfire,iOS以及安卓端都很优秀的开源库可以使用,而且传输安全以及扩展性强等(环信也是基于xmpp);同时也有一些缺点,比如不能传输二进制数据以及费流量等,有些地方需要去改进。
    下面记录如何使用XMPP来简单实现IM功能,在这之前需要先搭建本地服务器用于测试。

    ejabberd服务器搭建

    为了实现IM聊天,需要先搭建一个XMPP服务器,这里我们采用ejabberd来作为服务器,ejabbered采用Erlang语言编写,由于语言的特性天生适合高并发的情景。

    • 安装Erlang
      在安装ejabbered之前需要先安装Erlang,在控制台输入命令
    brew install erlang
    

    等待安装完成即可。

    • 安装ejabbered
      ejabbered服务器的安装非常简单,下载ejabberd安装包直接安装即可。
      ejabbered安装包.png
      安装完之后可以在Applications目录先找到:
      目录结构.png
      由于我们的服务器只是测试用的,比较重要的是bin目录下的start和stop命令,这两个分别用于开启和关闭xmpp服务,设置这两个命令为可执行:
    chmod 755 stop
    chmod 755 start
    

    现在输入命令 ./start可以看到如下的页面

    启动页面.png
    • 添加用户
      现在我们的服务器只有administrators,我们需要增加几个用户,也方便后面测试,可以输入http://localhost:5280/admin/ 到ejabberd的后台管理页面:
    管理页面.png

    点击虚拟主机,选择用户菜单可以看到添加用户的页面如下,我们添加了user1@lujiangbin.local和user2@lujiangbin.local两个用户:

    添加用户.png
    • 测试服务器
      现在可以来测试服务器是否能正常运行了。要测试的话我们需要两个支持xmpp协议的客户端,可以使用Mac OSX自带的iMessage(登陆user1)和Adium(登陆user2) ,其中支持xmpp协议的客户端有:
      http://xmpp.org/xmpp-software/clients/

    打开iMessage添加用户


    添加用户user1.png

    iMessage可能会提示服务器的证书需要验证,点击继续即可:

    屏幕快照 2015-10-08 下午3.34.55.png

    可以看到user1已经登陆成功了。


    登陆成功

    接着打开Adium添加user2@lujiangbin.local用户,添加过程跟iMessage类似:


    添加用户1.png

    设置连接服务器为localhost:


    添加用户2.png

    由于现在user1和user2还不是好友关系,因此没法进行聊天,点击iMessage添加好友user2@lujiangbin.local:

    添加好友

    在Adium会收到验证请求,点击接受双方互加好友,接着就可以进行im聊天了:

    好友添加.png 聊天.png
    这样我们确认本地的xmpp服务器是可用的,接下来就可以着手客户端的开发了,可以查看IM开发(2)-iOS客户端

    相关文章

      网友评论

      • 我是熊大啊:我想自己做个App、目前会OC和Swift 、我想知道后台服务这个地方要怎么做、我只需要简单的登录操作和购买操作、然后有会员属性、一头雾水、不知楼主有没有什么建议
        树下老男孩:后台你要不自己写可以用第三方,比如环信,
      • 我是熊大啊:感谢楼主、真爱
      • 5fe4328eaf04: 安装ejabbered ,设置admin密码,但登录后台提示用户密码不正确,试了好多次
      • 0x7472616d70:我启动成功了,但一直登录不到后台,不就是安装时填写的账号密码啊, :sweat:
      • 巴图鲁:膜拜
      • 90d0479548a4:大神们,我别的问题倒是都解决的差不多了,客户端测试账号也在管理界面创建好了,可是客户端就是死活登录不上,登陆的时候日志也是有反应的啊,这个需要改yml文件配置吗
        花间辞:@鸡蛋爱吃西红柿 不需要 记得要改服务器为localhost 端口号为5222
      • DrunkenMouse:chmod 755 stop
        chmod 755 start 什么意思啊。。
        DrunkenMouse:@胖嘟儿 没有,我用了别的方法
        088703a3f63b:@DrankMouse 你现在 弄出来了吗??
        DrunkenMouse:@DrankMouse 问了个搞服务器的,知道啥意思了 然而却提示No such file or directoryjabberd 唉。。前路漫漫啊
      • 你好牛:我也是 设置admin密码,但登录后台提示用户密码不正确 试了好多次 有什么其他办法解决吗 大神 而且 你给的那一个 解决方法 我的 系统 没有/etc/ejabberd/ejabberd.cfg 目录 所以 也不知道怎么搞
        90d0479548a4:@qmdckq 竟然是考一遍一遍重装弄好的,不可思议
        你好牛:@人生得意 解决了 没啥技巧 就是一边一遍的重装
        穿越地平线的渴望__:@qmdckq 我也是 /etc/ 下没有ejabberd ,你解决没有?
      • matrix_lab:总是还没连上,就已断开连接?什么情况呀?
      • 午夜大鸟王:安装ejabbered ,设置admin密码,但登录后台提示用户密码不正确 :sweat:
        树下老男孩:@Wii_moz :relieved:。应该不至于吧。哈哈
        午夜大鸟王:@树下的老男孩 安装了3次。 我也是跪了!
        树下老男孩:@Wii_moz 擦。。
      • Miss_Q: 大神QQ 多少,有问题请教
      • 郑大爷:用户名密码自己设置的,但是一直登不上,请问什么情况
        路小丫:用管理员的身份运行看看
        树下老男孩:@郑大爷 什么错误
      • 竹林漫步:谢谢分享 mark
      • ChrisPzzz:mark ...谢谢 一个月后要将这个需求上线

      本文标题:IM开发(1)-ejabberd服务器搭建

      本文链接:https://www.haomeiwen.com/subject/jquicttx.html