本文主要是介绍dcloud---利用websocket进行通信,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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,也是可用的,大家可以集成了看下。
这篇关于dcloud---利用websocket进行通信的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!