查过很多资料,感觉大部分都讲的不够详细,做为一个新人我从webSocket的基本开始学起,

首先webSocket的原理其实和Http差不多,但是由于Http只能被动的去向服务器请求消息,导致缺点太明显,然而webSocket就像一个本事只要连接终生受益,只要连接服务器就一直朝你推送信息,就像你有了一个男朋友,天天嘘寒问暖,接触安卓必然会遇到她。

很多人会看到这不就是用来实时通讯的吗?但是只要连接上了就一直不断,但是我使用她时就遇到连接端看的问题。

刚连接成功,过了一会就自动连接失败,

我把自己的源码拿出来

try{
url = ip.getText().toString();
if(url != ""){ //判断url 不为空、并且webSocket也不为空
URI serverURI = URI.create("ws://"+url+":4399");
webSocketClient = new WebSocketClient(serverURI) {
/*
* 连接建立成功调用的方法
* */
@Override
public void onOpen(ServerHandshake handshakedata) {
sb.append("服务器状态:");
sb.append(handshakedata.getHttpStatusMessage());
sb.append("\n");
sb.append("已连接");
msg.obj = sb.toString();
issueHandler.sendMessage(msg);
}
/*
* 收到客户端消息后调用的方法
* @param message 客户端发送过来的消息
* */
@Override
public void onMessage(String message) {
Message handlerMessage = Message.obtain();
handlerMessage.obj = message;
handler.sendMessage(handlerMessage);
}
/*
* 连接关闭调用的方法
* */
@Override
public void onClose(int code, String reason, boolean remote) {
msg.obj = "未连接";
issueHandler.sendMessage(msg);
}
/*
* 发生错误时调用
* */
@Override
public void onError(Exception ex) {
sb.append("错误信息 info:"+ex);
sb.append("\n");
msg.obj = sb.toString();
issueHandler.sendMessage(msg);
}
};
webSocketClient.connect();
}else{
Message msg = handler.obtainMessage();//同 new Message();
msg.obj = "请输入IP地址!";
issueHandler.sendMessage(msg);
}
}catch (Exception e){
e.printStackTrace();
}

webSocket的学习以及问题的解决的更多相关文章

  1. Arduino学习经验(一)之解决舵机库和pwm输出冲突

    一.前言 最近在公司学习Arduino uno ,用它实现小车超声波避障功能.实现的功能很简单,就是在小车前方挂一个超声波模块,当碰到障碍物时,会通过舵机进行摆头,判断两边的距离,进行左右转弯.但是碰 ...

  2. webSocket浏览器握手不成功(解决)

    websocket与服务端握手会报握手不成功的错误解决方法: 首先是服务端首次收到请求要回报给客户端的报文要做处理多的不说,方法敬上: /// <summary> /// 打包请求连接数据 ...

  3. 用python实现websocket请求遇到的问题及解决方法。

    想要实现python的ws库功能,实时获取对方服务器ws协议返回的数据,查了下百度,用如下流程: ws = create_connection("wss://ws.xxxxxxx.info/ ...

  4. websocket协议学习

    一 实验代码 client.html websocket_server.go package main import ( "crypto/sha1" "encoding/ ...

  5. Salesforce LWC学习(三十七) Promise解决progress-indicator的小问题

    本篇参考:https://developer.salesforce.com/docs/component-library/bundle/lightning-progress-indicator/exa ...

  6. 每日学习心得:Linq解决DataTable按照某一列的值排序问题/DataTable 导出CSV文件/巧用text-overflow解决数据绑定列数据展示过长问题

    2013-8-5 1 Linq解决DataTable按照某一列的值排序 在之前的总结中提到过对拼接而成的复合的DataTable按照某一列值的大小排序,那个主要的思想是在新建表结构时将要排序的那一列的 ...

  7. Oracle11g R2学习系列 之十 解决EM不能用

    不知道是什么原因https://localhost:1158/em,今天突然就不能用了.做了好多搜索也没有解决.现象是在services.msc中,不能重启OracleDBConsole服务,提示: ...

  8. mabatis学习(四)----解决字段名与实体类属性名不同的冲突

    在项目开发中,数据库中的字段名不一定和实体类的类名完全相同(当然大小写忽略),那么就可以在sql映射文件中解决此问题 一.创建需要的数据库和表 编写sql脚本,在navicat for mysql中执 ...

  9. Java学习总结——常见问题及解决方法

    CYTX项目开发中遇到的问题及解决方法 Android开发各类常见错误解决方案: 使用Android Studio遇到的问题及解决过程 登录注册部分问题及解决: 1.问题:"No targe ...

随机推荐

  1. leetcode题目解答报告(1)

    Remove Element 题目: Given an array and a value, remove all instances of that value in place and retur ...

  2. 阿里云Redis开发规范(转)

    一.键值设计 1. key名设计 (1)[建议]: 可读性和可管理性 以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id ugc:video: (2)[建议]:简洁性 ...

  3. Windows服务器从Linux服务器上以FTP形式获取图片

    Windows服务器上运行一个获取图片的程序,获取图片采用的是FTP方式: 准备条件: Linux服务器上创建一个FTP的用户:ftppic 这个账号要有权限才可以,然后编写Windows端代码: p ...

  4. ThinkPHP RBAC权限管理机制

    RBAC是ThinkPHP很好用的后台权限管理的,话不多说,实现方法如下,也方便以后自己查询使用: 1.新建4个数据库表 self_role权限表 CREATE TABLE `self_role` ( ...

  5. matlab从fig文件中提取数据

    如果你的fig文件中图像是由多条曲线绘制而成,比如说plot命令生成的,通过以下方式输出横坐标,纵坐标的取值 open('figname.fig'); lh = findall(gca, 'type' ...

  6. Redis缓存服务搭建及实现数据读写 - Eric.Chen

    发现博客园中好多大牛在介绍自己的开源项目是很少用到缓存,比如Memcached.Redis.mongodb等,今天得空抽时间把Redis缓存研究了一下,写下来总结一下,跟大家一起分享 一下.由于小弟水 ...

  7. centos 配置

    安装 node 源地址: http://my.oschina.net/blogshi/blog/260953 (一) 编译好的文件 简单说就是解压后,在bin文件夹中已经存在node以及npm,如果你 ...

  8. 基于深度学习和迁移学习的识花实践——利用 VGG16 的深度网络结构中的五轮卷积网络层和池化层,对每张图片得到一个 4096 维的特征向量,然后我们直接用这个特征向量替代原来的图片,再加若干层全连接的神经网络,对花朵数据集进行训练(属于模型迁移)

    基于深度学习和迁移学习的识花实践(转)   深度学习是人工智能领域近年来最火热的话题之一,但是对于个人来说,以往想要玩转深度学习除了要具备高超的编程技巧,还需要有海量的数据和强劲的硬件.不过 Tens ...

  9. 【EOJ Monthly 2018.2 (Good bye 2017)】

    23333333333333333 由于情人节要回家,所以就先只放代码了. 此题是与我胖虎过不去. [E. 出老千的 xjj] #include<cstdio> #include<c ...

  10. zookeeper分布式安装

    1.先把zookeeper-3.5.2-alpha.tar上传解压到/usr/local/下重命名为zookeeper ############# zookeeper env ############ ...