pom文件依赖
application.yml文件:
WebSocket配置文件:
在resources下面创建一个static文件夹,然后新建一个index.html页面:
创建一个WebsocketService 类,用来服务端与客户端进行交互:
其中@ServerEndpoint注解是服务端与客户端交互的关键,其值(/starView/{userId})得与index页面中的请求路径对应。
启动服务,在浏览器请求 http://localhost:10714/index.html ,如下所示:
一个简单的websocket就搭建完成了
cmd命令台中,项目目录下使用 npm install ws,安装ws模块;也可以使用npm install ws -g 安装全局ws模块。
server.js
C#中服务端写法与客户端写法类似。
成功结果如下:
点击提交后,服务端接收到客户端传来的信息。这里将传递的信息值写死,实际上需要根据需要传递信息。
如上图,得到的socket对象下有ConnectionInfo属性,可进入调试查看详细。
这里是得到了该socket的唯一标识id,可供服务器辨识。
暂时没找到解决方法,初步解决方法:
在连接成功时,客户端手动向服务端传递一个自身身份的信息。
环境:消息推送需要使用长联讯,所以采用websocket遇见问题:微信开发者工具可以使用websocket,但是使用手机真机调试websocket无响应
解决思路:
一.确保websocket调用api的正确使用顺序
二.服务器环境的搭建以及合法域名的校验
三.开发者后台要配置wss和ip白名单
第一步:确保API的正确调用
二.服务器搭建以及合法域名的校验以及wss的配置
1.这里提到的服务器搭建,主要是因为在微信小程序中,websocket支持的一定是wss的通信协议,当然也不是说你用ws不行,但是我感觉测试可以,如果要配置上线的话,还是需要使用wss的!可以在后台管理界面进行配置
---开发---开发设置---服务器域名设置
切记:一个月只有五次的修改机会!慎重哦
修改成功后,可以打开开发工具的详情页面进行查看,来查看是否配置成功
2.合法域名的校验
众所周知,小程序在开发过程中,只要你点击不校验合法域名,就可以不进行跨域处理,但是如果要求上线,一定要进行配置,防止出现跨域问题。然后合法域名也是要求https,需要携带证书!
三.会遇到的问题!
当你配置完所有以后,你会发现在开发环境下,你是可以使用websocket的,但是当你选择真机测试的时候,你会发现你的websocket失效了,你如果打开两个管理控制台,你会发现,开发工具的上面, 长联讯 的 属性type :为websocket,但是真机环境下的 长联讯 的 属性type :为xhr!
当时我以为是我api调用的问题,查阅了好多资料,都没得到解决!最后在微信开发社区里面找到了和我遇见一模一样问题的人!询问以后才得知解决办法!!!说实话,解决方法,让我有点哭笑不得
是不是和我遇到的一样!!!
四.解决办法!!!
直接上线就可以了,线上环境就可以成功了!如果觉得直接上线不好!你可以提交为体验版本即可
综上所述...websocket在真机上和开发工具上的不一致,就能得到解决了【点击了解更多加盟项目】
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)