问题标签 [netty]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 使用 Java 和 Netty 的聊天服务器
我想用 Java 和 Netty 实现一个聊天服务器。我的问题是:我应该在 Netty 的连接处理程序中完成所有工作吗?对于“所有工作”,我的意思是例如:登录(使用 mysql 连接),最终发送消息,记录信息..
java - Netty + ProtoBuffer:一个连接的几个通信消息
在阅读 Netty 教程时,我发现了一个关于如何集成 Netty 和Google Protocol Buffers的简单描述。我已经开始研究它的示例(因为文档中没有更多信息)并编写了一个简单的应用程序,例如示例本地时间应用程序。但是这个例子是在 PipeFactory 类中使用静态初始化,例如:
(请看一下 line p.addLast("protobufDecoder", new ProtobufDecoder(Communication.DataMessage.getDefaultInstance()));
)并且只能为ClientBootstrap
类创建一个工厂(据我所知),我的意思是bootstrap.setPipelineFactory()
方法。所以,在这种情况下,我可以使用一条 消息发送到服务器并使用一条消息从服务器接收,这对我来说很糟糕,我认为不仅仅是对我来说:(我怎样才能使用不同的消息来往和来自一个连接? 也许我可以创造一些protobufDecoder
这样的
还是其他技术?非常感谢。
java - 类似于 Netty 的 C++ 网络库
有没有类似 JBoss 的 Netty 的 C++ 网络库?我需要一个架构,我可以在其中将协议处理程序添加到列表中并将网络数据包作为对象处理。
sockets - Netty 并发和“对等连接重置”
我已经构建了以下简单的服务器,我正在使用ab
. 如果我运行ab
3000 个总请求(300 个并发),它就可以工作。如果我再次运行它,它会告诉我:
如果在此错误之后我尝试使用 curl 发出单个请求而不重新启动服务器,则它可以工作。如果我再次运行ab
它会显示相同的错误。它似乎无法处理太多的并发连接。代码下方:
这是处理程序:
如您所见,它非常简单,它只显示处理的请求总数。有小费吗?
谢谢
java - Netty 线程模型在客户端连接多的情况下如何工作?
我打算在即将到来的项目中使用 Netty。该项目将充当客户端和服务器。特别是它会建立和维护与各种服务器的许多连接,同时为自己的客户端提供服务。
现在,NioServerSocketChannelFactory的文档相当好地指定了服务器端的线程模型 - 每个绑定的侦听端口在整个过程中都需要一个专用的老板线程,而连接的客户端将在工作线程上以非阻塞方式处理。具体来说,一个工作线程将能够处理多个连接的客户端。
但是,NioClientSocketChannelFactory的文档不太具体。这似乎也同时利用了老板和工作线程。但是,文档指出:
一个 NioClientSocketChannelFactory 有一个老板线程。它根据请求进行连接尝试。一旦连接尝试成功,boss 线程将连接的 Channel 传递给 NioClientSocketChannelFactory 管理的工作线程之一。
工作线程似乎也以与服务器案例相同的方式运行。
我的问题是,这是否意味着从我的程序到外部服务器的每个连接都会有一个专用的老板线程?如果我建立数百或数千个这样的连接,这将如何扩展?
作为旁注。将单个 Executor(缓存线程池)同时用作 ChannelFactory 的bossExecutor和workerExecutor是否有任何不利的副作用?在不同的客户端和/或服务器 ChannelFactory 实例之间重用呢?这在此处有所讨论,但我发现这些答案不够具体。谁能详细说明一下?
netty - 带有 WSS 的 Draft10
我正在尝试在 SSL (WSS) 之上运行 Netty Draft10 最新示例
我正在使用以下端口配置:
端口:80:Apache 非 ssl
端口:443:Apache ssl
端口:8080:Tomcat
端口:8877:Netty Web 非 SS
端口:9977:Netty SSL
但是当我嵌入 SSL 处理程序代码时
进入 WebSocketServerHandler 类我收到一条错误消息
这是我的管道代码
有任何想法吗?
干杯,
塔米尔
netty - 当客户端在 JBoss Netty 中意外关闭时收到通知
Netty 服务器端是否有监听器,当客户端意外关闭时(例如当客户端 m/c 中的 LAN 电缆被移除时)会通知该监听器。DefaultChannelHandler 中的所有方法都没有被调用。假设拔下 LAN 电缆时客户端处于非活动状态(不发送/接收任何数据)。
或者我们是否必须在服务器端实现一个 Keep-Alive 监视器来检查通道是否有效?
java - 如何最好地指定与 Netty 一起使用的 Protobuf(最好使用内置的 protobuf 支持)
我在protocol buffers中指定了一个协议。传输层正在利用Netty的 Protocol Buffers 支持——意义在于 Netty 的ProtobufDecoder接受一种,并且只接受一种MessageLite类型。
现在,我想通过这个通道发送各种不同的消息类型,每个子类型都有与之关联的结构化信息。协议缓冲区没有继承机制,所以我使用了一种组合。我不确定我是否以正确的方式去做。
我的方法是用枚举对我的不同事件进行分类,并使用可选成员封装它们的差异。请参阅.proto
下面的内容,为清楚起见,我对其进行了简化。
我的问题是接收代码需要在 EventType.ERROR 和 ErrorEventDetail 之间建立关联。这只是感觉有点笨拙。
简化Events.proto
:
这是最优的吗?我会更好地以某种方式使用扩展,或者也许其他一些用途enum
?
甚至,我是否应该创建一个全新的OneToOneDecoder可以通过某种标头识别消息类型?我可以这样做,但我宁愿不...
谢谢
java - 如何在 JBoss-Netty 中使用无限帧大小而不浪费内存?
我探索netty在 VM 之间通信对象。我分别使用ObjectEncoder
&ObjectDecoder
来序列化这些。
我很快发现这个解决方案仅限于最大 1MB 大小的对象。由于我打算传达更大的对象并且考虑到我不打算限制这个大小,我曾经Integer.MAX_VALUE
设置最大帧长度。
不幸的是,看起来这个值被用来初始化一些缓冲区,从而导致不必要的 GC-ing 并且很可能在 OutOfMemory 中。
有没有办法在使用 DynamicChannelBuffers 时创建无限的 ObjectEncoder/Decoder,以免浪费太多内存?
multithreading - 为什么 play(netty3) 上传使用单线程?
我使用play开发我的项目并嵌入netty3作为我的应用服务器请检查以下测试代码:
当我打开两个浏览器(Firefox 和 Chrome)同时上传文件时,我在“上传(文件文件)”方法中调试了断点。但我发现只有 1 个线程正在处理。之后,第二个请求来了。
输出是:
但是在 Tomcat/Jetty 中,控制台中有两个线程输出。
以前有没有人遇到过同样的问题?