javascript - Java Websocket 无法正确打开 WAS 9.0
问题描述
我已经创建了一个非常简单的 Java websocket,我正在尝试在我们的测试环境中对其进行测试。在我的本地机器上,websocket 无缝打开,保持就绪状态代码“1”,一切似乎都运行良好。
然而,在我的测试机器上,即使套接字似乎打开了,我仍然检查 readystate 并给出代码“1”,从 Https 升级到 websocket 发生在网络选项卡中,我的 Java 代码中的 OnOpen 函数没有似乎被触发了(我正在尝试在套接字打开时记录新连接附带的 userId,并且在我的测试环境日志中也没有显示。在我的本地机器上,这也可以)
private static final ArrayList<Session> connectedSessions = new ArrayList<>();
@OnClose
public void closeSession(Session session) {
try {
connectedSessions.remove(session);
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
}
@OnMessage
public void onMessage(String message, final Session session) {
broadcastMessage(message, session);
}
@OnOpen
public void openSession(@PathParam("userId") String userId, Session session) {
try {
session.getUserProperties().put("USER_ID", userId);
connectedSessions.add(session);
LOGGER.info("-------- Connection id ---------" + userId);
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
}
在前端,我使用的是 angular,但没有其他 websocket 框架,只是普通的 javascript,而对于我的后端,我正在运行带有 Websphere 应用程序服务器 9.0 的 Xframe 2.2。我确定我正在调用正确的端点,因为它可以在我的本地机器上运行,并且我已经使用多个会话对其进行了多次测试。
编辑:添加下面的角度代码
this.ws= new WebSocket("wss://" + env.websocketUrl + "socket" + this.context.settings.userId);
this.ws.onmessage = (event) => {
this.update(event.data, this.context.settings.userId);
};
doSomething(data) {
this.ws.send(data);
}
需要注意的是消息被发送。我检查了 WS 的框架,但没有得到任何响应。它保持“待定”
解决方案
可以关闭。原来我的公司正在阻止在我们的测试/生产服务器上运行的任何 http2 调用。这就是为什么 websockets 在我的本地机器上工作的原因。
推荐阅读
- callback - chromecast 中的视频标签不会触发“等待”事件
- html - Bootstrap - 为反向行模式创建移动适配
- vue.js - 在 vue 中使用 props 发送数据
- asp.net-mvc - 是否可以在 MVC 中将 ViewBag 值从一个页面保留到另一个页面?
- html - 使用 Django,如何在我的视图中静默提交表单而不返回 HTTP 响应,以便在调用视图函数时不重新加载网页
- excel - VBA 访问数据透视表编码
- android - Kotlin - Recycleview ViewHolder OnClick 不起作用
- python - aws CLI install window
- multithreading - iTask - 如何使用变量作为 TTask 过程的参数
- ruby-on-rails - 在 ruby 测试中动态调整夹具值