java websocket 同步,一个 Java 的问题,HTTP 与 Websocket

现在的情况是这样的,Java 接收 HTTP 请求,在这个 HTTP 请求中会使用到 Websocket 去请求其他数据,怎么在这个 HTTP 中同步等待 Websocket 的业务返回?代码如下,主要是 Websocket 收到消息是走 OnMessage,我没想出好办法做这个处理,目前的处理办法就是在接到 HTTP 请求的时候,往数据库里加一条记录,然后一直使用这个记录 ID 循环查询数据库,当 Websocket 返回数据了,就将数据写入数据库并改变那条记录的状态,HTTP 请求里就直接相当于在数据库里查询到 Websocket 的业务返回,虽然这样做我是可以暂时完成功能,但好像感觉不太靠谱,求大神指点一下

public class TestController {

@Autowired

private MyWebSocket myWebSocket;

@RequestMapping("/test")

public Object test(){

myWebSocket.sendText("ceshi");

return xxx;

}

}

@ServerEndpoint(port = 9898)

@Component

public class MyWebSocket {

private static final Set sessions = Collections.synchronizedSet(new HashSet());

@OnOpen

public void onOpen(Session session, HttpHeaders headers, ParameterMap parameterMap) throws IOException {

System.out.println("new connection");

sessions.add(session);

}

@OnMessage

public void onMessage(Session session, String message) {

System.out.println(message);

if ("heart".equals(message)) {

session.sendText("heart");

}else {

session.sendText(message);

}

}

public void sendText(String msg) {

for (Session session: sessions) {

session.sendText(msg);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值