Ning:连接到websocket并等待响应

 MINT米田 发布于 2022-12-19 15:33

使用Ning创建并连接到Websocket,以下是我的配置,

 NettyAsyncHttpProviderConfig config = new NettyAsyncHttpProviderConfig();
 config.addProperty(NettyAsyncHttpProviderConfig.USE_BLOCKING_IO, "true");

 AsyncHttpClientConfig.Builder builder = new AsyncHttpClientConfig.Builder()
                .setAsyncHttpClientProviderConfig(config);

 AsyncHttpClient client = new AsyncHttpClient(
                new NettyAsyncHttpProvider(builder.build()));

 AsyncHttpClient.BoundRequestBuilder requestBuilder = client.prepareGet(createUri(method))
                .addHeader(HttpHeaders.Names.CONNECTION, "Upgrade")
                .addHeader(HttpHeaders.Names.UPGRADE, "WebSocket");

 websocket = requestBuilder.execute(new WebSocketUpgradeHandler.Builder()
                .addWebSocketListener(this).build()).get();

使用websocket发送短信,

 if (websocket!=null && websocket.isOpen())
       websocket.sendTextMessage(jObj.toString());// send

onMessage() 侦听器的方法将响应添加到列表中

@Override
public void onMessage(String message) {
   serverResponse.add(message);
}

发送文本消息后,我有方法格式化响应并保存结果

result = responseFromServer();

private String responseFromServer() {
    String response = null;
    sleep(100);
   if(!serverResponse.isEmpty())
      //format the message which is added in list
    return response;
}

问题是,如果我在上面的方法中没有'sleep(100)',对于request1- response为null,对于request2,我得到response1.我希望websocket能够同步工作,这样,一旦我发送消息,就应该等待响应接收并继续前进!有什么建议!

1 个回答
  • 使用waitnotify对象,

    synchronized (someObject){
      try {
         someObject.wait();
         result = responseFromServer();
       } catch (InterruptedException e) {
            //when the object is interrupted
       }
    }
    

    并在onMessage收到消息后通知对象,

    @Override
    public void onMessage(String message) {
         serverResponse.add(message);
         synchronized(someObject) {
              someObject.notify();
         }
    }
    

    2022-12-19 15:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有