03 April 2015

前言

几周前,我把融云sdk介绍给老板。现在,该到自己学习怎么使用。

介绍

融云的盈利模式: 免费加增值。

通信方式: Client SDK + Server SDK。部署方式: 独立部署授权service。

JSSDK的demo的代码如下:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script>
//强制使用长链接
//      window.WEB_XHR_POLLING = true;
//强制使用flash
//      window.WEB_SOCKET_FORCE_FLASH = true;
    </script>
    <script src="http://res.websdk.rong.io/RongIMClient-0.9.6.min.js"></script>
</head>
<body>
</body>
<div style="margin: 10px 10px">
    content:<input id="content" type="text" style="width: 80%;" value="1">
</div>
<div style="margin: 10px 10px">
    send to:<input type="text" id="target" style="margin-right: 50px" value="TARGETID">type:<select id="type" style="margin-right: 50px">
    <option value="4" selected>私聊</option>
    <option value="1">客服</option>
    <option value="0">聊天室</option>
    <option value="2">讨论组</option>
    <option value="3">群组</option>
</select>
    <button id="send">send</button>
</div>

<div id="mydiv" style="width: 100%;height: 200px;background-color: oldlace;overflow-y: auto">

</div>
<div id="cons">
</div>
<script>
    window.onload = function () {
        var cons = document.getElementById("cons");
        window.log = function (x) {
            cons.innerHTML += x + "<br/>";
        };
        // 初始化, 客户端聊天
        RongIMClient.init("bmdehs6pdcm6s");
        
        // 设置消息监听器,向终端中写入消息,打开firebug的终端可以看到
        RongIMClient.setConnectionStatusListener({
            onChanged: function (status) {
                window.console.log(status.getValue(), status.getMessage(), new Date())
            }
        });
        
        var self = "";
        // 这里的token要从融云网站的API菜单中获取
        var token = "LFPc+Gi2GHjuCxKQnP2ruJsQBDlphTudYZe4u9ePSklDax1jyQzeVnNru3KJ3qDaRaBxIwSJYcwefwe"; 
        // 建立到融云server的连接
        RongIMClient.connect(token, {
            onSuccess: function (x) {
                alert("connected,userid=" + x)
                self = x;
            },
            onError: function (x) {
                window.console.log(x.getMessage())
            }
        });

        ins = RongIMClient.getInstance();  // RongIMClient是个工厂方法,这里使用的是单例模式
        // 设置向某个div内插值
        var mydiv = document.getElementById("mydiv");
        
        ins.setOnReceiveMessageListener({
            onReceived: function (data) {
                var p = document.createElement("span");
                p.style.marginRight = "10px";
                p.innerHTML = data.getContent();
                mydiv.appendChild(p);
            }
        });

        var c = document.getElementById("content"),  // 内容, 对应上面html中的内容
            to = document.getElementById("target"),  // 通信目标
            s = document.getElementById("send"),     // send按钮
            t = document.getElementById("type");     // 发送方式
        s.onclick = function () {
            var con = RongIMClient.ConversationType.setValue(t.value);
            ins.sendMessage(con, to.value, RongIMClient.TextMessage.obtain(c.value || Date.now()), null, {
                onSuccess: function () {
                    confirm("send successfully");
                    c.value = (c.value * 1 + 1);
                }, onError: function () {
                    confirm("send fail")
                }
            });
        }
    };
</script>
</html>

备注: 从上面可以看到RongIMClient是SDK的主类,需要主要研究一下。

后记

感觉上,虚拟机就像是一个巨大的软件一样,寄宿在宿主机器中。个人不太喜欢wine,感觉弄脏了我原本的系统。




傲娇的使用Disqus