webSocket的学习以及问题的解决
查过很多资料,感觉大部分都讲的不够详细,做为一个新人我从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的学习以及问题的解决的更多相关文章
- Arduino学习经验(一)之解决舵机库和pwm输出冲突
一.前言 最近在公司学习Arduino uno ,用它实现小车超声波避障功能.实现的功能很简单,就是在小车前方挂一个超声波模块,当碰到障碍物时,会通过舵机进行摆头,判断两边的距离,进行左右转弯.但是碰 ...
- webSocket浏览器握手不成功(解决)
websocket与服务端握手会报握手不成功的错误解决方法: 首先是服务端首次收到请求要回报给客户端的报文要做处理多的不说,方法敬上: /// <summary> /// 打包请求连接数据 ...
- 用python实现websocket请求遇到的问题及解决方法。
想要实现python的ws库功能,实时获取对方服务器ws协议返回的数据,查了下百度,用如下流程: ws = create_connection("wss://ws.xxxxxxx.info/ ...
- websocket协议学习
一 实验代码 client.html websocket_server.go package main import ( "crypto/sha1" "encoding/ ...
- Salesforce LWC学习(三十七) Promise解决progress-indicator的小问题
本篇参考:https://developer.salesforce.com/docs/component-library/bundle/lightning-progress-indicator/exa ...
- 每日学习心得:Linq解决DataTable按照某一列的值排序问题/DataTable 导出CSV文件/巧用text-overflow解决数据绑定列数据展示过长问题
2013-8-5 1 Linq解决DataTable按照某一列的值排序 在之前的总结中提到过对拼接而成的复合的DataTable按照某一列值的大小排序,那个主要的思想是在新建表结构时将要排序的那一列的 ...
- Oracle11g R2学习系列 之十 解决EM不能用
不知道是什么原因https://localhost:1158/em,今天突然就不能用了.做了好多搜索也没有解决.现象是在services.msc中,不能重启OracleDBConsole服务,提示: ...
- mabatis学习(四)----解决字段名与实体类属性名不同的冲突
在项目开发中,数据库中的字段名不一定和实体类的类名完全相同(当然大小写忽略),那么就可以在sql映射文件中解决此问题 一.创建需要的数据库和表 编写sql脚本,在navicat for mysql中执 ...
- Java学习总结——常见问题及解决方法
CYTX项目开发中遇到的问题及解决方法 Android开发各类常见错误解决方案: 使用Android Studio遇到的问题及解决过程 登录注册部分问题及解决: 1.问题:"No targe ...
随机推荐
- Hibernate表关系映射之一对多映射
一.基本概述 在表中的一对多,是使用外键关联,通过一张表的一个键另一个表的外键来建立一多关系;而在类中表示为一个类中有一个集合属性包含对方类的很多对象,而在另一个类中,只包含前述类的一个对象,从而实现 ...
- 2 Maven使用入门
一.编写pom.xml文件 Maven项目的核心是pom.xml.POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等等. ...
- SecureCRT中使用VBs脚本自动telnet登陆
查看SecureCRT帮助文档: Help-> Help Topics->Scripting -> Script Objects Reference -> Session Ob ...
- view定位
- MySQL学习笔记(五)—— 子查询及联结
子查询: 子查询,即嵌套在其他查询中的查询.例如我们有这样几个表,顾客表,订单表,商品表,我们想知道有哪些客户买了商品A,那么我们就需要先查看哪些订单里包含了商品A,然后根据订单查出是哪些客户. my ...
- Ubuntu安装基础教程
作者:TeliuTe 来源:基础教程网 二十三.安装Ubuntu14.04 返回目录 下一课 14.04 版安装与前面版本类似,学习中遇到不清楚的地方,可以参考一下前面的内容,操作中注意细心,下面来看 ...
- <编译>条件编译——判断当前使用的编译器及操作系统
有时候编译需要多平台运行的代码,需要一些条件编译,经常忘记,这里专门记录一下,方便下次查找. 编译器 GCC #ifdef __GNUC__ #if __GNUC__ >= 3 // GCC ...
- POJ 2970 The lazy programmer(贪心+单调优先队列)
A new web-design studio, called SMART (Simply Masters of ART), employs two people. The first one is ...
- Win32编程点滴5 - 响应ActiveX控件的事件
在最近的一篇文章中说到了,如何创建ActiveX,这次我们来响应事件.这次,我们将创建一个类:CGeneralEventSink,它能够响应任何Dispatch事件(事件的接口继承与IDispatch ...
- P4147玉蟾宫——最大子矩阵
悬线法裸题. 代码如下: #include<iostream> #include<cstdio> #include<cstring> using namespace ...