如何发送buf然后接收msg
方法
Mono<ByteBuf> send(ByteBuf buf){
// how to send the buf then receive a msg
}
我正在尝试通过从连接出站发送msg并从入站接收msg然后返回消息Mono来实现此方法。但我只能在that(Publisher)方法中接收消息。它似乎无法返回数据Mono
我试过这个。
// the connecttion has been initialized before entering this method.
Mono.just(buf)
.doOnNext(data -> connection.outbound().sendObject(data).then().subscribe())
.then(connection
.inbound()
.receiveObject()
.single()
.map(RpcDataPackage.class::cast)
.map(RpcDataPackage::getData)
.map(data -> {
try {
return resCodec.decode(data);
} catch (IOException e) {
throw new RpcRequestException(e);
}
})
);
但它会一直阻塞,直到连接超时
我尝试了另一个代码。我添加了一个handle方法,并将响应放到map中。然后我可以得到单声道。fromSupply(),在映射处有一个while循环中断。获取(键)!=空。
它会阻塞线程。
.handle(((nettyInbound, nettyOutbound) -> nettyInbound
.receiveObject()
.map(RpcDataPackage.class::cast)
.doOnNext(pkg -> {
String responseKey = "a key"
responseMap.put(responseKey, pkg);
})
.then()))
您应该结合使用NettyOutbound::然后监听写入完成和Mono::然后在写入后读取NettyInboud。
Mono<String> resposeMono = TcpClient.create()
.connect()
.flatMap(connection -> connection.outbound().sendString(Mono.just("Hello!"))
.then()
.then(connection.inbound().receive().aggregate().asString())
.doOnTerminate(connection::dispose));
这将写“你好!”对于输出,将输入中的所有字节作为字符串读取,然后处理连接。
我阅读了Mono javadoc并找到了MonoSink。
Mono.create(monoSink -> {
// some call
})
当入站接收到对象响应时,只需执行sink。success()
您没有指定您的期望。参见下面的示例,它发送一些数据,然后接收服务器返回的数据。
@Test
public void test() {
Connection connection =
TcpClient.create()
.wiretap(true)
.host("example.com")
.port(80)
.connect()
.block();
assertNotNull(connection);
connection.outbound()
.sendObject(Unpooled.wrappedBuffer("test".getBytes()))
.then(connection.inbound()
.receiveObject()
.last()
.doOnNext(System.out::println)
.then())
.then()
.block();
}
通常在服务器发送一些数据时发生Message事件。服务器发送到客户端的消息可以包括纯文本消息,二进制数据或图像。无论何时发送数据,都会触发函数。 此事件充当客户端对服务器的耳朵。每当服务器发送数据时,都会触发事件。 以下代码段描述了打开Web Socket协议的连接。 还需要考虑使用Web套接字可以传输哪些类型的数据。Web套接字协议支持文本和二进制数据。就Javascript而言,文本指的是字符
我有1个活动和1个普通类,其中活动1接收消息,普通类发送消息。如何实施: 在活动一中。班 在Ordinary.class 如何发送空消息(1)的代码?
我想做以下事情: 感谢任何回应。 我的单元测试如下: 演示方法用于组装tlv(我们的自定义协议)对象。 关键日志如下: 创建的TcpClient工作不好,我不知道如何更正,有人能告诉我一种正确的方法吗。
我不知道如何获取消息的消息链接,discordjs文档似乎没有任何关于消息链接的内容。我试过这个: 但其结果是“行会没有定义”。我这样做对吗?
我一直在开发一个简单的python套接字聊天室,客户端和服务器可以在其中相互发送消息。我遇到的问题是服务器和客户端一次只能发送一条消息。我希望它能像任何其他聊天室一样工作,在那里我可以在发送消息时收到消息,任何帮助都会有很大帮助
传送/接收语音消息 所谓的语音消息是指能传送自己录制之声音简讯的机能。无论对方是在在线或脱机接能传送。若要使用语音消息,传送者或接收者的其中一方需先以 Skype 点数或信用卡,支付语音消息的使用费用。 传送语音消息 1. 进入 Skype 的选单画面后选择(联系人)。 2. 选择语音消息希望传送对象的图标后,按下按钮。. 3. 选择[传送语音消息]。 遵循辅助讯息录制语音消息。最多可录制