流水不争先,争的是滔滔不绝

PHP 用Goeasy实现WebIM即时通讯

即时通讯软件开发 云聊IM 3016℃

项目期间要写一个在线客服,最初接到需求的时候,将收发消息存入数据库做个轮询。写到一半的时候突然发现,太尼玛坑爹,慢的一B不说,还挺占用服务器资源,人一多,聊天体验极差。遂放弃,四处找了下相关插件,发现这些插件要么收费,要么就是独立的后台,不符合项目需求。最后又耐心性子看了一天的Workerman,第二天放弃了,socket 要想三两天就上手感觉太不切实际。最后发现了GOeasy!!!

GOeasy的使用非常简单!

首先去官方注册一个账号并创建一个项目!你会得到两个KEY值,一个只能用来接收消息,另一个可以收发消息!后台的demo目前官方只有java的,但是收发消息全部可以用Javascript搞定~ 只用引用一个外部的js包就好。

<script type="text/javascript" src="http://cdn.goeasy.io/goeasy.js"></script> 

接下来说一下接收消息

<script>
     var goEasy = new GoEasy({'你申请key值'});
        goEasy. subscribe({
             channel: '你自己创建的项目',
             onMessage: function(message){
                    if(message){
                        console.log(message);
                        var xiaoxi = message.content.match(/&(.*?)\$/);
                        var username = xiaoxi[1];
                        if(username!='管理员'){
                            $(".qq-exe").addClass('qq-new-m');
                        }
                    }
                    // alert('Meessage received:'+message.content);//接收到推送的消息
            }
        });
</script>

subscribe用来接收消息。需要注意的事,GOeasy是推送,也就是说你想GOeasy发送一条消息后,它也会像你自己推送。所以如果

做聊天的话,我们一定要自己处理一下数据。我简单测试了一下发现,免费版的好像只能发送字符串。所以数据一定要处理!

接下来是发送消息(↓)

goEasy.publish({
       channel: "你自己的项目名称",
       message: "#" + ner + "&管理员$" + fa_id + "!!",
       onSuccess: function(message) {
               //    console.log(message)
       },
       onFailed: function(error) {
               alert("消息发送失败,错误编码:" + error.code + " 错误信息:" + error.content);
       }
})

用“#&$!!”是为了拼接用户ID和用户名,好做处理。可以按照自己设定的规则去进行发送。消息发送成功后可以根据自己项目的业务逻辑去进行入库或者缓存处理。这里就不多BB了。

如果是后台发送消息的话,只需向下面固定的地址发送post请求。如下面的例子所示

$url = ‘http://rest-hangzhou.goeasy.io:80/publish’;

public function ceshi($url){
        //请求地址
        $uri = $url;
        // 参数数组
        $data = array(
            'appkey'  => "BC-6942c75ef1ab4ef49ffbb40313d92c40",
            'channel' => "你自己的项目地址",
            'content' => "你好啊"
        );
        $ch = curl_init ();
        curl_setopt ( $ch, CURLOPT_URL, $uri);//地址
        curl_setopt ( $ch, CURLOPT_POST, 1 );//请求方式为post
        curl_setopt ( $ch, CURLOPT_HEADER, 0 );//不打印header信息
        curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );//返回结果转成字符串
        curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );//post传输的数据。
        $return = curl_exec ( $ch );
        curl_close ( $ch );
}

如果发现发送失败,请答应header头查看原因~

简单的聊天就这样搞定啦~ 话说回来,如果项目对即时通讯需求大的话还是特娘的用第三方吧。

版权声明:部分文章、图片等内容为用户发布或互联网整理而来,仅供学习参考。如有侵犯您的版权,请联系我们,将立刻删除。
点击这里给我发消息