dcloud---利用websocket进行通信
2018-02-01 16:09
204 查看
dcloud---利用websocket进行通信
1.开发中通常会用到双向通信,即有些时候需要服务器主动推动消息给客户端,显然TCP不可能做到,因此在这里我顺带提一下 websocket。
2.有些时候,开发中,要用到轮训,轮训,说白了,就是要保证某东西一直开着,在达到某个条件的时候,做出某种动作,最简单的定时器机制,就能做到,举个例子,比如手机扫描二维码登录系统,你就可以再二维码页面,做一个定时器,一直来轮训某一个值,手机扫描之后,产生这个值,当定时器轮训到这个值之后,登录系统。但是这样的话,是不是太耗资源,当然,这样写,也不是不可能的。这里,因为项目中用到websocket,所以,我就简单记录一下。
3.Websocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议; WebSocket他是为了解决客户端发起多个http请求到服务器资源浏览器必须要经过长时间的轮训问题而生的,他实现了多路复用,他是全双工通信;在webSocket协议下客服端和浏览器可以同时发送信息。
4.在本次项目中Java后端是websocket的Tomcat实现,服务端代码是集成在springboot里面的,运行的话,是采用springboot自带的tomcat运行,具体怎么实现,大家可以参考 https://www.cnblogs.com/bianzy/p/5822426.html,写的基本很全面了,只不过本人再启动的时候,遇到了一个错误日志:java.lang.IllegalStateException:javax.websocket.server.ServerContainer
not available,大概意思英语好的额可以翻译一下,本人英语水平有限,就不翻译了,处理的方式是,修改config中bean的注入
@Bean
public ServletContextAware endpointExporterInitializer(final ApplicationContext applicationContext) {
return new ServletContextAware() {
@Override
public void setServletContext(ServletContext servletContext) {
ServerEndpointExporter exporter = new ServerEndpointExporter();
exporter.setApplicationContext(applicationContext);
exporter.afterPropertiesSet();
}
};
}
然后启动项目,就OK啦。
5.这里说一下,这个问题,websoket,客户端url,请注意,完整的地址是,ws:ip:端口/项目名/服务端,例如:ws:localhost:8080/test/websocket;怎么测试该接口,看了一下,网上好像有工具可以测试,其实直接运行一下这个h5页面,就可以了。
6.最后,经过本人测试,在dcloud项目中,h5页面加入websocket,也是可用的,大家可以集成了看下。
好了,还是推荐加入QQ群
488505459,一起探讨学习哈。
1.开发中通常会用到双向通信,即有些时候需要服务器主动推动消息给客户端,显然TCP不可能做到,因此在这里我顺带提一下 websocket。
2.有些时候,开发中,要用到轮训,轮训,说白了,就是要保证某东西一直开着,在达到某个条件的时候,做出某种动作,最简单的定时器机制,就能做到,举个例子,比如手机扫描二维码登录系统,你就可以再二维码页面,做一个定时器,一直来轮训某一个值,手机扫描之后,产生这个值,当定时器轮训到这个值之后,登录系统。但是这样的话,是不是太耗资源,当然,这样写,也不是不可能的。这里,因为项目中用到websocket,所以,我就简单记录一下。
3.Websocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议; WebSocket他是为了解决客户端发起多个http请求到服务器资源浏览器必须要经过长时间的轮训问题而生的,他实现了多路复用,他是全双工通信;在webSocket协议下客服端和浏览器可以同时发送信息。
4.在本次项目中Java后端是websocket的Tomcat实现,服务端代码是集成在springboot里面的,运行的话,是采用springboot自带的tomcat运行,具体怎么实现,大家可以参考 https://www.cnblogs.com/bianzy/p/5822426.html,写的基本很全面了,只不过本人再启动的时候,遇到了一个错误日志:java.lang.IllegalStateException:javax.websocket.server.ServerContainer
not available,大概意思英语好的额可以翻译一下,本人英语水平有限,就不翻译了,处理的方式是,修改config中bean的注入
@Bean
public ServletContextAware endpointExporterInitializer(final ApplicationContext applicationContext) {
return new ServletContextAware() {
@Override
public void setServletContext(ServletContext servletContext) {
ServerEndpointExporter exporter = new ServerEndpointExporter();
exporter.setApplicationContext(applicationContext);
exporter.afterPropertiesSet();
}
};
}
然后启动项目,就OK啦。
5.这里说一下,这个问题,websoket,客户端url,请注意,完整的地址是,ws:ip:端口/项目名/服务端,例如:ws:localhost:8080/test/websocket;怎么测试该接口,看了一下,网上好像有工具可以测试,其实直接运行一下这个h5页面,就可以了。
6.最后,经过本人测试,在dcloud项目中,h5页面加入websocket,也是可用的,大家可以集成了看下。
好了,还是推荐加入QQ群
488505459,一起探讨学习哈。
相关文章推荐
- 示例,利用【socket】 模块进行通信
- 如何在snap中利用socket.io及websocket来进行实时数据更新
- Android 利用httpclient进行网络通信,实现用户登录的方法
- 使用WebSocket与服务器进行通信
- Android利用JNI通过Socket与服务器进行通信
- 进程间利用管道进行通信:打印斐波那契数列
- 一个完整的通过encoding/json信息传递格式,采用http.POST利用进行与服务器通信,并对返回结果进行解析处理的典型案例
- 线程利用管道字节(字符)流进行通信
- nodejs--websocket简易代码实现局域网多个客户端进行通信
- android利用websocket协议与服务器通信
- 关于利用android-serialport-api实现在安卓设备上进行串口通信,附精简版demo,亲测可用。
- 进程间通信---在父进程跟子进程之间利用管道进行通信。一个简单的例子
- ------------------------------利用BroadcastReceiver进行Activity和Service之间的通信(留着自己参考用)
- vue 父子组件通信,利用对象进行通信
- Service基础和利用Service进行跨进程通信
- 转:利用WinInet类进行TCP/IP通信内容
- 在LiveCode中利用socket进行通信(1)--入门介绍
- c#和java语言利用webservice进行通信浅析
- 利用Qt进行接口间通信
- java netty socket库和自定义C#socket库利用protobuf进行通信完整实例