直播中聊天的网络WebSocket

现在使用场景中,我们看到直播中的实时的对话,采用这种的使用方式。

WebSocket 的使用的好处是:其目的是在WebSocket应用和WebSocket服务器进行频繁双向通信时,可以使服务器避免打开多个HTTP连接进行工作来节约资源,提高了工作效率和资源利用率。

在okhttp 中有封装WebSocket 的使用。

private void startConn() {
        StringBuffer wsuri = new StringBuffer();
     
        if (!TextUtils.isEmpty(mPin)) {
            wsuri.append("&pin=" + mPin);
        }
  
        URI url = null;
        try {
            url = new URI(wsuri.toString());
        } catch (URISyntaxException var4) {
            var4.printStackTrace();
        }

        if (url != null && !this.mConnecting) {
            mConnecting = true;
            Request request = new Request.Builder().url(url.toString()).build();

            okHttpClient.newWebSocket(request, new WebSocketListener() {

                //当远程对等方接受Web套接字并可能开始传输消息时调用。                
                @Override
                public void onOpen(WebSocket webSocket, Response response) {
                    super.onOpen(webSocket, response);
              
                }

                //由于从网络读取或向网络写入错误而关闭Web套接字时调用。
                // 传出和传入的消息都可能丢失。 没有进一步的电话给这位听众。                @Override
                public void onFailure(WebSocket webSocket, Throwable t, Response response) {
                    super.onFailure(webSocket, t, response);

                   //当收到文本(类型{@code 0x1})消息时调用
                @Override
                public void onMessage(WebSocket webSocket, String text) {
                    super.onMessage(webSocket, text);

               
                }
                //当收到二进制(类型为{@code 0x2})消息时调用。
                @Override
                public void onMessage(WebSocket webSocket, ByteString bytes) {
                    super.onMessage(webSocket, bytes);
                }

                //当远程对等体指示不再有传入的消息将被传输时调用。    
            @Override
                public void onClosing(WebSocket webSocket, int code, String reason) {
                    super.onClosing(webSocket, code, reason);
                }

                @Override
                public void onClosed(WebSocket webSocket, int code, String reason) {
                    super.onClosed(webSocket, code, reason);

                 
            });

        }
    }

我们在实际的业务开发的时候,在开放的这几个接口中,实现自己的业务逻辑。

参考资料:

1   https://blog.youkuaiyun.com/sinat_36422236/article/details/85051547
2   https://www.jianshu.com/p/e294e6baa158

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值