为了充分了解 smart-socket 在实际应用中存在的用户痛点,欢迎大家在评论中反馈你对 smart-socket 的意见和建议。
包括且不限于功能增强、文档完善、示例补充等方面,凡是共性的问题我会统一安排处理。
当然,希望你描述的内容最好具体一些,太笼统的建议我也不知道该怎么做
添加各种plugin的使用示例,包括但不限于ReconnectPlugin、HeartPlugin、MonitorPlugin等
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
三刀大佬,smart-socket有没有netty的网速限制的功能呢?例如可以对上传速率,下载速率以及单个客户端可用的最大流量限制等功能
感谢解答~
添加各种plugin的使用示例,包括但不限于ReconnectPlugin、HeartPlugin、MonitorPlugin等
socket或websocket单机应用比较简单,但是分布式或集群的难度就比较大了,现有的单机要改造都比较麻烦,方案也有多种,像tio集群版还是收费的,可想而知集群的麻烦。如何简单的配置就能实现高可用是比较多的需求
请问下 现在是否有tcp和udp转发功能
期望增加类似netty的最通用的解码器: LengthFieldBasedFrameDecoder
在aio-pro包中有一个 FixedLengthFrameDecoder
这个不通用, LengthFieldBasedFrameDecoder是基于长度字段解码器,长度字段的在协议头的位置和长度可以自己定义
支持 这个用的很广泛 频繁
增加重连插件
请问如何写成同步的调用方式,目前只有 message processor
来接受回调通知,那么就无法把代码写成同步调用返回形式,请教一下大佬,第一天使用,下面是现在使用的情况:
@Override
public void req(
@NonNull final AbstractTcpClientParamsETO reqData,
@NonNull final Class<T> toClazz,
@NonNull final ServiceInfo serviceInfo,
@NonNull final TcpRespListenerI<T> respListener) {
// step1
reqData.validate();
try {
// step2
// 启动客户端
final MessageProcessor<String> clientProcessor =
(session, res) -> {
// step5
// TODO zhaojun 三方返回数据报文记录
SystemRuntimeLogUtils.info(
"external online send tcp req, The response data received is {}", res);
// step6
final T respData = respListener.parseRespData(res, toClazz);
// 在这里可以对外部服务的一些状态码进行校验,如果校验失败直接抛出异常即可
// step7
respListener.bizCodeValidate(respData);
final AbstractRespETO respPojo = (AbstractRespETO) respData;
// step8
respPojo.validate();
// step9
// 会在自定义响应对象 T 自身的validate 方法调用后执行,即如果第三方返回的数据本身有问题在 validate进行字段校验的时候就会 fast fail
respPojo.desensitized();
// step10
respListener.success(respData);
};
final AioQuickClient aioQuickClient =
new AioQuickClient(
clientProps.getHost(), clientProps.getPort(), new StringProtocol(), clientProcessor);
final AioSession session = aioQuickClient.start();
// 请求参数对象ETO 自行判断如何转换提交参数数据报文格式类型
// step3
final String reqParams = reqData.toParams();
final byte[] bytes = reqParams.getBytes();
// encode
session.writeBuffer().writeInt(bytes.length);
session.writeBuffer().write(bytes);
// step4
// flush data
session.writeBuffer().flush();
} catch (final IOException e) {
SystemRuntimeLogUtils.error("发送 tcp 请求出现 IO 错误", e);
throw new TcpInvokeException(serviceInfo, TcpInvokeExceptionDesc.TCP_IO_ERR, e);
} finally {
}
}
目前只有在上面的 自定义 resp listener的 success 回调接口客户端程序能获取到数据,但是如果在 DDD 分层模型,势必要把调用到基础设施层(TCP 外联其他 tcp server,我们目前的场景)的这个监听器一致传到请求入口层。这种耦合太严重了。
可以参考下smart-socket的 RPC 示例程序:org.smartboot.socket.example.rpc.rpc.RpcConsumerProcessor
谢谢 但是太复杂了。哈哈
建议把在TcpAioSession的WriteCompletionHandlerwrite在不破坏原有能力的情况下,类似completed的回调方法可以拓展开放成类似servlet的filter chain的回掉链,供用户可以参与这个事件.
类似netty的ChannelPipeline
登录 后才可以发表评论