
websocket
zhuwei_clark
还行吧
展开
-
Websocket相关问题总结(Session共享,用户多端登录等)
我们在使用websocket的时候其实主要面对的问题就是session共享的问题:不管是基于Spring实现的Websocket的WebsocketSession还是基于JDK实现的Session亦或者基于netty实现的ChannelHandlerContext用图来描述下场景吧:OK,大家看到这个图了,差不多应该明白了Session共享应该怎么处理了。其实原理很简单:...原创 2020-03-10 14:25:15 · 14371 阅读 · 1 评论 -
WebSocket配合Spring security oauth2实现另类的权限验证
第一步:token在路由地址中进行传输@ServerEndpoint(value = "/ws/{token}",encoders = { ServerEncoder.class })@Componentpublic class OrganHandler extends AbstractHandler{ /** * 连接 * @param session ...原创 2020-01-14 21:40:22 · 4091 阅读 · 4 评论 -
WebSocket中获取Spring的bean对象
新建工具类:/** * <b> </b> * <p> * 功能描述:解决注入的方式获取不到bean的情况 * * </p> * <p/> * @author 朱维 * @date 2018年11月2日 * @time 下午4:54:24 * @Path: com.xuebaclass.sato.socket....原创 2020-01-14 21:35:44 · 1175 阅读 · 0 评论 -
Spring boot集成websocket实现分布式websocketsession共享(二)--基于阿里云MQ(ONS)消息配置
spring boot集成阿里云ONS,增加配置文件类@Component@ConfigurationProperties(prefix="aliyun.ons")public class MqProperties extends Properties{ /** * 序列化标志 */ private static final long serialVersionUID = ...原创 2018-11-09 16:17:22 · 2087 阅读 · 0 评论 -
Spring boot集成websocket(一)----传统注册方式
修改配置类@Configuration@EnableWebSocketpublic class WebSocketConfig implements WebSocketConfigurer{ @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { ...原创 2018-11-09 16:10:43 · 2052 阅读 · 0 评论 -
Spring boot集成websocket(二)----基于注解的方式
首先先介绍spring boot和websocket的集成,基于注解的方式修改启动类增加Enable配置//启动websocket的支持@EnableWebSocket增加配置类@Configurationpublic class WebSocketConfig { @Bean public ServerEndpointExporter serverEndpoint...原创 2018-11-09 16:06:45 · 803 阅读 · 0 评论 -
The remote endpoint was in state [TEXT_PARTIAL_WRITING] which is an invalid stat e for called method
其实原因就是: handlerA和handlerB两个方法有可能同时执行,当A或者B方法遍历到某一个session并且调用sendMessage发送消息的时候,另外一个方法也正好也在使用相同的session发送另外一个消息(同一个session消息发送冲突了,也就是说同一个时刻,多个线程向一个socket写数据冲突了),就会报上面的异常。解决方法其实很简单,就是在发送消息的时候加上一把锁,(保...原创 2018-11-09 11:43:21 · 3586 阅读 · 0 评论 -
Nginx代理webSocket经常中断的解决方案, 如何保持长连接
解说:今天用nginx反代通讯项目,发现平均1分钟左右,就会出现webSocket连接中断,然后查看了一下,是nginx出现的问题。原因是: nginx等待你 第一次通讯和第二次通讯的时间差,超过了它设定的最大等待时间,简单来说就是,超时,所以就啪的一声断了,开始上解决步骤。解决方案一 其实只要配置nginx.conf的对应localhost里面的这几个参数就好 proxy_con...转载 2018-11-05 09:56:26 · 8926 阅读 · 0 评论 -
Spring boot集成websocket实现分布式websocketsession共享(一)--基于redis的发布订阅
本文主要是针对分布式场景下的使用websocket的一个解决方案。我们以下面的图来说明下业务使用场景。 针对如图的情况,很多人第一时间想到的是websocket的session共享,这是大多数的第一反应。很遗憾的是,websocketsession是不支持序列化操作,所以也就不可能存在redis中。那么我们有什么其他的方式解决呢。 我们知道在单节点中我们只需要吧websockets...原创 2018-10-30 21:09:26 · 25764 阅读 · 50 评论