用HBuilderX开发的HTML5+APP,遇到了关于webSocket的问题。

等待3秒 2019-08-20 04:56:04
首先在PC端用手机模拟器是没有问题的。
然后第一次安装到手机上使用时,new WebSocket("ws://url");还报了302状态。因为后台是shiro框架,我直接把socket服务取消登陆拦截了。但是还是会在登陆验证时保存session对象。以此可以访问到webSocket服务类了。

@Override
protected boolean onLoginSuccess(AuthenticationToken token, Subject subject, ServletRequest request, ServletResponse response) throws Exception {
Pager pager = new Pager();
String username = (String) token.getPrincipal();
// 获取用户
User user = userService.getUserByUsername(username);
//将用户信息添加到session
Session session = subject.getSession();
session.setAttribute("user",user);
System.out.println(session.getId());
........


然后问题又来了,在WebSocket服务类中获取到session后没有user对象,并且查看sessionId同登陆时的也不一致

@OnOpen
public void onOpen(Session session,EndpointConfig config) {
httpSession = (HttpSession) config.getUserProperties().get(HttpSession.class.getName());
//TODO:PDA访问时Attributes中没有user对象
User user = (User)httpSession.getAttribute("user");
this.session = session;
this.userId = user.getId();
System.out.println("有用户连接了:"+userId);
webSocketMap.put(user.getId(), this);
........

...全文
536 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jonychen1 2021-10-18
  • 打赏
  • 举报
回复

我个人推荐直接使用第三方websocket 插件【GoEasy】,它文档齐全,上手简单。使用下来稳定性、实时性都很不错。

iteye_16776 2020-03-12
  • 打赏
  • 举报
回复 1
dcloud插件市场有一款不错的websocket插件,试用下来,稳定性、实时性都还不错。地址在这里:https://ext.dcloud.net.cn/plugin?id=1334

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧