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,也是可用的,大家可以集成了看下。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值