websocket

arthas诊断器简介

笑着哭i 提交于 2020-12-30 17:54:36
arthas是阿里巴巴开源的JVM诊断利器,当我们遇到以下类似问题而束手无策时,Arthas可以帮助解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统的运行状况? 有什么办法可以监控到JVM的实时运行状态? 怎么快速定位应用的热点,生成火焰图? Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。 安装使用 #下载 curl -O https://arthas.aliyun.com/arthas-boot.jar #运行 方式一 java -jar arthas-boot.jar --telnet-port 9998 --http-port -1 #运行 方式二 java -jar arthas-boot.jar 查看线程 #查看最繁忙的三个线程 thread -n 3 反编译 jad #查看我们的代码是否发布上去了 jad javax.servlet.Servlet ClassLoader: +

用t-io从零写一个像微信的IM(05):架构设计

你离开我真会死。 提交于 2020-12-30 13:58:57
关于架构 将帅无能,累死三军;架构不行,耗死码农。 架构之于软件,同地基之于大厦。 地基腐则大厦塌,架构烂则软件败 架构图 架构解说 1. 多级缓存 两级是使用较多的一个流程,所谓两级缓存指的是本地缓存和分布式缓存,当本地缓存没有命中时,则去分布式缓存中获取数据;而本架构中说到了多级缓存,是将本地缓存又分为拦截器之前的缓存和业务数据缓存。拦截器之前的缓存指的是收到请求时,直接从请求路径中获取缓存,如果命中则直接返回;业务数据缓存比较大众,本文略过介绍 2. 协议适配/转换 web型的客户端,用websocket会比较自然舒服;非web型的客户端如安卓、IOS,用普通的socket会比较舒服简单。于是服务器就需要同时支持普通socket和websocket,为了减化业务开发,统一消息体结构,本架构特别放置了协议适配器和协议转换器,用于将不同协议的Packet统一成业务需要的Packet。好在t-io内置了协议转换器,也提供了端口数据共享的机制,所以在实现本架构的意图时就变得相对简单。 3. 流量控制 流控是每个系统必备的一个功能了,勿用多言,实现起来并不复杂 4. 任务队列 为了提升系统的流畅度,很多操作都会变成异步的,队列成为必不可少的一个组件 5. t-io集群 t-io企业版的集群版,已经内置了集群能力,使用起来也相当简单,本系统做了一个集群开关,可随时对集群和非集群进行切换

how to get id of current user in websocket open method?

[亡魂溺海] 提交于 2020-12-29 16:42:49
问题 I am trying to get user id in open method of websocket, and for this I am using shiro, but I get null for Subject,Here is my method: @OnOpen public void open(final Session session, @PathParam("room") final String room) { Subject currentUser = SecurityUtils.getSubject(); long id = currentUser.getPrincipals().oneByType(model.Users.class) .getId(); log.info("session openend and bound to room: " + room); session.getUserProperties().put("user", id); } Does anybody have any idea what I should do?

how to get id of current user in websocket open method?

为君一笑 提交于 2020-12-29 16:39:35
问题 I am trying to get user id in open method of websocket, and for this I am using shiro, but I get null for Subject,Here is my method: @OnOpen public void open(final Session session, @PathParam("room") final String room) { Subject currentUser = SecurityUtils.getSubject(); long id = currentUser.getPrincipals().oneByType(model.Users.class) .getId(); log.info("session openend and bound to room: " + room); session.getUserProperties().put("user", id); } Does anybody have any idea what I should do?

how to get id of current user in websocket open method?

一曲冷凌霜 提交于 2020-12-29 16:38:20
问题 I am trying to get user id in open method of websocket, and for this I am using shiro, but I get null for Subject,Here is my method: @OnOpen public void open(final Session session, @PathParam("room") final String room) { Subject currentUser = SecurityUtils.getSubject(); long id = currentUser.getPrincipals().oneByType(model.Users.class) .getId(); log.info("session openend and bound to room: " + room); session.getUserProperties().put("user", id); } Does anybody have any idea what I should do?

how to get id of current user in websocket open method?

痴心易碎 提交于 2020-12-29 16:35:32
问题 I am trying to get user id in open method of websocket, and for this I am using shiro, but I get null for Subject,Here is my method: @OnOpen public void open(final Session session, @PathParam("room") final String room) { Subject currentUser = SecurityUtils.getSubject(); long id = currentUser.getPrincipals().oneByType(model.Users.class) .getId(); log.info("session openend and bound to room: " + room); session.getUserProperties().put("user", id); } Does anybody have any idea what I should do?

Getting “socket hang up” using nodejs / socket.io and wscat

我们两清 提交于 2020-12-29 12:01:30
问题 I have the following nodejs web socket server var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); server.listen(8000); app.get('/', function (req, res) { res.sendFile(__dirname + '/index.html'); }); io.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); }); console.log("Listening on 8000"); When trying to connect using wscat wscat -c ws:/

Getting “socket hang up” using nodejs / socket.io and wscat

自闭症网瘾萝莉.ら 提交于 2020-12-29 12:00:56
问题 I have the following nodejs web socket server var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); server.listen(8000); app.get('/', function (req, res) { res.sendFile(__dirname + '/index.html'); }); io.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); }); console.log("Listening on 8000"); When trying to connect using wscat wscat -c ws:/

Getting “socket hang up” using nodejs / socket.io and wscat

风格不统一 提交于 2020-12-29 12:00:21
问题 I have the following nodejs web socket server var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); server.listen(8000); app.get('/', function (req, res) { res.sendFile(__dirname + '/index.html'); }); io.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); }); console.log("Listening on 8000"); When trying to connect using wscat wscat -c ws:/

Why is EventSource connection closed every 30-60 sec when no data transported, while WebSocket's one is kept open?

孤街浪徒 提交于 2020-12-29 10:00:34
问题 I would like to push data to users every 2 min. Using EventSource requires additional pushing null-byte every 29 sec to keep the connection open. WebSocket doesn't require such ping. Why is the EventSource connection regularly closed and reopened? Is it because there is no good built-in way in HTTP to check if the connection is still open or other reason? 回答1: The Server-Sent Events (Eventsource) API is layered on HTTP. WebSocket is layered on TCP (but has an HTTP compatible handshake). Both