2021-04-20 15:41
@jfinal爱好者22 就着这个问题,我想追问一个问题,只想获得response的内容的字节数,除了拿到response后,拿到具体的内容转成byte数组获取长度外,还有没有更高效的办法。我这里是需要统计网站每天往外传递的字节数。
2021-04-03 13:21
@北流家园网 首先,你后端要有一个保持所有连接对象的池子,我这里定义的是这样的:
private final Map connections = new ConcurrentHashMap<>(100);
其中WebSocket是在封装的对象,里面主要的成员就是session。
然后有连接,断开连接,你来维护这个connections变量。
最后在MainConfig的onStop里,遍历connections然后通过WebSocket里的session对象断开连接。
我的断开所有代码是这么写的:
public static void disconnectAll() {
Map webSockets = WebSocketManagerUtil.webSocketManager.localWebSocketMap();
CloseReason closeReason = new CloseReason(CloseReason.CloseCodes.NORMAL_CLOSURE , "NORMAL_CLOSURE");
webSockets.forEach((identifier , webSocket) -> {
try {
webSocket.getSession().close(closeReason);
} catch (IOException e) {
e.printStackTrace();
}
});
webSockets.clear();
}
2021-03-11 16:35
@chcode 目前没有发现开发工作,mac上没有的软件。除了我用的powerdesigner,mac上没有,就装一个虚拟机。
2021-03-08 15:36
@一路走来 web应用如果部署成多实例实现负载均衡和故障转移,肯定就需要使用分布式session了啊。登录可以使用cookie,也可以集成单点登录,但也会需要这种分布式session的。并不是分布式都是做api接口的。
2021-03-05 11:02
@JFinal 看来还是有不少人很期待JFinal的Redis插件能支持哨兵或则集群模式的。强烈建议官方能跟根据redisson重新封装一套redis插件。除了能对redis读写,还能支持例如分布式锁这些高级功能。
2021-03-05 10:57
@海哥 JBoot已经做得很好了。我也从JBoot里学了很多东西。只是我这里自己封装了一套方便自己开发使用。自从换到undertow上,也就不再考虑其他web容器了。只要能让我尽快打完收工,尽早回家陪“女朋友”就行了。^_^
2021-03-03 11:29
@北流家园网 结合@JFinal的解释以及websocket的特性,websocket的session是不能序列化的。你这个问题,要通过两个步骤解决:第一:解决后台抛的异常问题,我观察在热加载的时候,其实是要回调onStop方法的,在这个方法里,关闭所有已经连上的websocket的session。这样就不会抛那个XNIO007007: Thread is terminating异常了。第二步,你的客户端一定要增加断线重连机制,我是通过发心跳实现的断线重连。这样,你后台一旦触发热部署,会先关闭所有已经连接的websocket,然后客户端会触发断线重连,就会重新连接上服务器。回复通信。