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 ...
随机推荐
- Kotlin基本语法笔记3之定义类、继承及创建实例
定义类 class MyObject private constructor(name: String, age: Int) { private var name: String private va ...
- Kotlin基本语法笔记之函数、变量的定义及null检测
定义函数 fun sum(a: Int, b: Int): Int { return a + b } 该函数中两个参数的类型都是Int,返回类型是Int 也可以做如下简化 fun sum(a: Int ...
- [Java SE] 字符串连接
Java 支持多种字符串连接方式,总结如下: package cn.spads.tool.string; import java.text.MessageFormat; /** * <b> ...
- 关于ArcGIS动态图层空间内栅格数据,JS前端显示颜色不正确的解决方案
ArcGIS的动态空间,可承载Table,Shp,Raster等数据. 我们的需求是,每天客户有新的卫星数据,但是不同类型,有多波段Landsat卫星数据,有Modis数据等.不定期更新到共享文件夹, ...
- Java 线程转储
软件维护是一个枯燥而又有挑战性的工作.只要软件功能符合预期,那么这个工作就是好的.设想一个这样的情景,你的电话半夜也一直在响(这不是一个令人愉快的感受,是吧?)任何软件系统,无论它当初是被设计的多好, ...
- codeforces 463C. Gargari and Bishops 解题报告
题目链接:http://codeforces.com/contest/463/problem/C 题目意思:要在一个 n * n 大小的棋盘上放置两个bishop,bishop可以攻击的所有位置是包括 ...
- BestCoder3 1002 BestCoder Sequence(hdu 4908) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4908 题目意思:给出 一个从1~N 的排列你和指定这个排列中的一个中位数m,从这个排列中找出长度为奇数 ...
- tflearn 数据集太大无法加载进内存问题?——使用image_preloader 或者是 hdf5 dataset to deal with that issue
tflearn 数据集太大无法加载进内存问题? Hi, all! I'm trying to train deep net on a big dataset that doesn't fit into ...
- mapkeeper总结
1. mapkeeper下有个thrift目录,在该目录编译c++版本和java版本. C++版本需要系统安装thrift-0.9.2,而java版本需要系统安装thrift-0.8.0 2. thr ...
- Java网络编程InetAddress类
InetAddress用来代表IP地址.一个InetAdress的对象就代表着一个IP地址, getByName(String host):在给定主机名的情况下确定主机的 IP 地址,主机名可以是机器 ...