websocket和普通的http请求有点类似。
比如http请求形式为:
http://www.zerotop.top/mini/websocket
而websocket请求的形式为:
ws:www.zerotop.top/mini/websocket
或者:
wss:www.zerotop.top/mini/websocket
wss是使用ssl加密过的websocket,即ws的加密版
既然websocket的请求和http有点类似,那便可以用借鉴http的流程去实现websocket。
可以使用spring框架连接websocket
首先需要pom.xml中引入下面的两个依赖:
org.springframework
spring-websocket
4.3.3.RELEASE
org.springframework
spring-messaging
4.3.3.RELEASE
然后根据spring文档中的方式:
1.需要去创建一个handler去处理请求:
public class WssHandler implementsWebSocketHandler {
publicvoidafterConnectionEstablished
(WebSocketSession session)throws Exception {
// TODOAuto-generated method
}
......
public voidafterConnectionClosed
(WebSocketSessionsession,CloseStatuscloseStatus)
throws Exception {
// TODOAuto-generated method stub
}
}
2.创建一个配置类进行注册:(可以自定义handshake拦截器)
@Configuration
@EnableWebSocket
public class WebSocketConfig extendsWebMvcConfigurerAdapter
implements WebSocketConfigurer {
@Bean
public WebSocketHandlermyHandler() {
return newWssHandler();
}
@Override
public voidregisterWebSocketHandlers
(WebSocketHandlerRegistry registry) {
registry.addHandler(myHandler(), "/websocket")
.addInterceptors(newMyWebSocketInterceptor())
.setAllowedOrigins("*");;
}
}
3.需要再spring-mvc.xml配置文件中配置包扫描,使注解生效。
由于不是所有浏览器都支持websocket,所以spring提供基于SockJS模拟websocket api,于是我们可以写一些页面用于模拟websocket的使用。
4.便可以在微信小程序中进行访问了,我们可以先选中项目设置中的:不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书。
这样我们便可以通过:
wx.connectSocket({
url: 'ws://localhost:8088/mini/websocket'
})
如果校验合法域名的化,可以通过以下方法连接websocket:
wx.connectSocket({
url: 'wss://www.zerotop.top/mini/websocket'
})
wx.onSocketOpen(function (res) {
console.log('WebSocket连接已打开!')
})
连接成功之后,便可以向自己的服务器发送请求或者接收服务器传来的请求。
有问题的可以微信公众号留言,一起交流。希望以上内容对您有所帮助。
领取专属 10元无门槛券
私享最新 技术干货