草庐IT

Netty-websocket

全部标签

java - 使用 Spring websockets 的自定义 Stomp header

我有一个基本的springwebsocket应用程序,它当前向订阅者发送基本数据。目前,系统使用SimpMessageSendingOperations类作为消息处理程序。如果我调用SimpMessageSendingOperations.convertAndSend(destination,object),则对象将被转换并由订阅的客户端接收。我希望能够向客户发送自定义header。我尝试使用SimpMessageSendingOperations.convertAndSend(destination,object,headers)方法来执行此操作。但是,自定义header不包含在st

java - 使用 Spring 4 WebSocket 从 Java 推送消息

我想将消息从Java推送到WebSocket客户端。我已经成功地让一个js客户端发送到服务器并在2个js客户端上收到一条消息,所以客户端代码工作正常。我的问题是我想在Java应用程序中发生事件时启动发送。因此,例如,每次下10个订单时,都会向所有订阅的客户发送一条消息。这可能吗?我当前的配置:@ControllerpublicclassMessageController{@MessageMapping("/hello")@SendTo("/topic/greetings")publicGreetinggreeting()throwsException{returnnewGreeting

java - 未调用 Netty 处理程序

我正在尝试使用一个简单的服务器-客户端应用程序(代码见下文)进入Netty。我正在努力解决两个问题:ConfigServerHandler响应。ConfigClientHandler被正确调用。但是FeedbackServerHandler响应。永远不会调用FeedbackClientHandler。为什么?根据文档,处理程序应该一个接一个地调用。我想要多个处理程序。这些处理程序中的每一个只对另一方发送的某些消息感兴趣(例如,客户端发送,服务器接收)。我应该在处理程序(channelRead)接收到消息后对其进行过滤吗?如何区分不同的字符串?对于不同的对象,通过解析它们应该很容易。是否

java - netty如何确定读取何时完成?

下面是回显服务器的ChannelHandler。Netty框架将调用channelReadComplete()方法来通知处理程序,对channelRead()的最后一次调用是当前批处理中的最后一条消息。我的问题是,由于数据是在中继线上传输的,Netty如何知道一批消息何时完成? 最佳答案 channelReadComplete()一旦没有更多数据可从底层传输读取,就会被触发。在谈论SocketChannels时,这将是以下两种情况之一:read(...)返回0read(...)得到一个传递给它的缓冲区,该缓冲区有1024个字节要填充

java - Spring Boot + Websocket (SockJS)

我正在尝试制作一个服务器,在发生更改时通知连接的客户端。为此,我在服务器上使用SpringBoot。为了传递通知,每个客户端都与服务器建立一个套接字。我使用了本指南:https://spring.io/guides/gs/messaging-stomp-websocket/它完美地工作。在此示例中,客户端通过套接字发送消息,服务器响应。问题是我无法找到服务器向客户端发送消息而不需要客户端先发送消息的方法!是否可以列出所有已连接的websockets?谢谢, 最佳答案 我的答案:客户端不需要发送消息,但他们必须连接和订阅。我实际上是在

java - 如何最好地指定用于 Netty 的 Protobuf(最好使用内置的 protobuf 支持)

我在protocolbuffers中指定了一个协议(protocol).传输层正在利用Netty的ProtocolBuffer支持-Netty的ProtobufDecoder的重要性接受一种且仅一种MessageLite类型.现在,我想沿着这个channel发送各种不同的消息类型,每个子类型都有与之关联的结构化信息。Protocol-buffers没有继承机制,所以我使用了一种组合。我不确定我的处理方式是否正确。我的方法是使用枚举对我的不同事件进行分类,并使用可选成员封装它们的差异。请参阅下面我的.proto,为了清楚起见,我对其进行了简化。我的问题是接收代码需要在EventType.

java - 每个连接的 Netty 处理程序都是唯一的吗?

我一直在查看Nettywebsite中的代理服务器示例:示例源代码处理程序有一个volatile变量privatevolatileChanneloutboundChannel;负责连接到另一台代理服务器的channel。这让我想知道这是否是为代理实现多个连接的正确且安全的方法。我想允许多个连接(入站)连接到不同的出站,同时确保每个入站连接都唯一链接到出站channel。据我所知,Netty会为每个连接生成一个新的管道。这是否意味着管道工厂新生成的处理程序专门用于新连接(channel)?附注如果我有1,000个Activity连接到我的Netty服务器,这是否意味着有1,000个不同的

java - Netty IdleStateHandler 的问题——我是不是以错误的方式测试它?

我有一个玩具Netty服务器,当他们的channel没有发生任何事情时,我正试图向他们发送心跳消息。我正在通过telnet到服务器进行测试,写一条消息然后不发送任何东西,但我没有听到任何心跳!控制台:>>telnetlocalhost6969Trying127.0.0.1...Connectedtolocalhost.Escapecharacteris'^]'.>>fooDidyousay'foo'?MyPipelineFactory.javapublicclassMyPipelineFactoryimplementsChannelPipelineFactory{privatefina

java - Netty 增加 ChannelBuffer 大小

你好,我有一个Netty服务器,它有一个应该接受字符串的处理程序。它似乎只能接收最多1024字节的内容。我怎样才能增加缓冲区大小。我已经试过了bootstrap.setOption("child.sendBufferSize",1048576);bootstrap.setOption("child.receiveBufferSize",1048576);没有成功。处理程序如下publicclassTestHandlerextendsSimpleChannelHandler{@OverridepublicvoidmessageReceived(ChannelHandlerContextc

java - 带有 Tomcat 的 JSR-356 WebSockets - 如何限制单个 IP 地址内的连接?

我制作了一个JSR-356@ServerEndpoint,我想在其中限制来自单个IP地址的Activity连接,以防止简单的DDOS攻击。请注意,我正在搜索Java解决方案(JSR-356、Tomcat或Servlet3.0规范)。我尝试过自定义端点配置器,但即使在HandshakeRequest对象中我也无法访问IP地址。如何在没有iptables等外部软件的情况下限制来自单个IP地址的JSR-356连接数? 最佳答案 根据Tomcat开发人员@mark-thomas的说法,客户端IP未通过JSR-356公开,因此不可能使用纯JS