java socket 调用_java http请求中调用socket/websocket业务并等待返回输出。

关键检索:request等待异步回调并继续执行,http请求挂起等待socket异步回调。

随着智能行业蓬勃发展,难免有一种业务是:APP/web的一个http/https请求,需要获取智能设备的基本信息,又或者,机器人使用ros模块化通信的时候,需要联络各个模块把基本信息回执发回给服务端。

本文章解决的是一个HTTP/HTTPS的请求挂起等待socket异步回调,我们以Java为例。

4e678e639161

通信示例

代码过程如下

创建一个回调服务类,我们使用object.wait();来锁定等待当前业务返回,一旦拿到返回结果使用object.notifyAll() 来解锁。

BlockService 代码如下:

4e678e639161

BlockService

4e678e639161

SocketList

定义接口类,用来回调:

4e678e639161

ICallBack

在调用socket发送指令给设备的时候,存储了这个回调ICallBack&#

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Java调用WebSocket接口,你可以使用Java提供的WebSocket API或者使用第三方库。下面是两种方法的示例: 1. 使用Java提供的WebSocket API: ```java import javax.websocket.*; import java.net.URI; @ClientEndpoint public class WebSocketClient { @OnOpen public void onOpen(Session session) { System.out.println("Connected to server: " + session.getRequestURI()); } @OnMessage public void onMessage(String message) { System.out.println("Received message: " + message); } @OnClose public void onClose(Session session, CloseReason closeReason) { System.out.println("Connection closed: " + closeReason); } public static void main(String[] args) { WebSocketContainer container = ContainerProvider.getWebSocketContainer(); try { Session session = container.connectToServer(WebSocketClient.class, URI.create("ws://example.com/socket")); // 可以在这里发送消息 session.getBasicRemote().sendText("Hello, server!"); } catch (Exception e) { e.printStackTrace(); } } } ``` 2. 使用第三方库例如Java-WebSocket(https://github.com/TooTallNate/Java-WebSocket): ```java import org.java_websocket.client.WebSocketClient; import org.java_websocket.handshake.ServerHandshake; import java.net.URI; import java.net.URISyntaxException; public class WebSocketClientExample extends WebSocketClient { public WebSocketClientExample(URI serverUri) { super(serverUri); } @Override public void onOpen(ServerHandshake handshakedata) { System.out.println("Connected to server: " + getURI()); } @Override public void onMessage(String message) { System.out.println("Received message: " + message); } @Override public void onClose(int code, String reason, boolean remote) { System.out.println("Connection closed: " + reason); } @Override public void onError(Exception ex) { ex.printStackTrace(); } public static void main(String[] args) { try { WebSocketClientExample client = new WebSocketClientExample(new URI("ws://example.com/socket")); client.connect(); // 可以在这里发送消息 client.send("Hello, server!"); } catch (URISyntaxException e) { e.printStackTrace(); } } } ``` 这些示例代码可以帮助你在Java调用WebSocket接口。你需要将示例代码的"ws://example.com/socket"替换为实际的WebSocket服务器地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值