我正在开发一个使用Websockets(Java EE 7)的应用程序,以异步方式向所有连接的客户端发送消息.每当创建新文章(我的应用程序中的参与模式)时,服务器(Websocket端点)都应发送这些消息.
每次建立与websocket端点的连接时,我都会将相应的会话添加到列表中,我可以在外部访问该列表.
但我遇到的问题是,当我访问这个创建的websocket端点时,所有客户端都从外部连接(任何其他业务类),我得到了现有的实例(如单例).
那么,请你建议我一个方法,我可以得到一个现有的websocket端点实例,因为我无法创建它作为新的MyWebsocketEndPoint()因为它将由websocket内部机制创建,只要客户端的请求是接收.
对于参考:
private static WebSocketEndPoint INSTANCE = null;
public static WebSocketEndPoint getInstance() {
if(INSTANCE == null) {
// Instead of creating a new instance, I need an existing one
INSTANCE = new WebSocketEndPoint ();
}
return INSTANCE;
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我正在尝试将一堆gzip压缩数据(基本上是json,使用gzip压缩)发送到我的Spring Web Flux应用程序.
我目前正在使用Postman作为我的Web客户端,并通过请求有效负载(Body - > raw)发送数据.这是我的有效载荷的一瞥.
[31, -117, 8, 0, 0, 0, 0, 0, 0, 0, -51, ... (there's a lot more)
Run Code Online (Sandbox Code Playgroud)
使用Content-Type:application/json和Content-Encoding:gzip.
这就是我从http服务器请求中提取数据的方式.
Mono<DataBuffer> dataBufferMono = request.flatMap(req -> req.bodyToMono(DataBuffer.class)
//...stuff to get dataBuffer out of Mono
byte[] byteArray = IOUtils.toByteArray(dataBuffer.asInputStream());
Run Code Online (Sandbox Code Playgroud)
我提取的byteArray应该是从客户端发送的.但问题是,事实并非如此.这是我收到的一瞥.
[91, 51, 49, 44, ... (there's a lot more)
Run Code Online (Sandbox Code Playgroud)
我在哪里做错了?我坚持工作这个问题,任何帮助将不胜感激.
注意:我也尝试将Content-Type更改为八位字节流,但没有运气!也尝试使用ByteBuffer而不是DataBuffer,从未奏效.
我在我的应用程序中使用基于JavaEE 7的Websocket-API.
我需要访问我的websocket端点中的cookie中设置的值[Annotated one : @ServerEndpoint ("/websocket") ].我该怎么办?
@onOpen()方法就在那里,当建立与此websocket端点的连接时,将自动调用该方法.我想在这个方法中访问那里的cookie值.
我知道如何在servlet或JSP中做到这一点,但我是Websockets的新手.
请帮我这样做.提前致谢.
我需要使用Oracle数据库和Spring,我可以轻松选择Spring Data JPA,但我的所有程序都应该是被动的.
就像Spring支持Couchbase和Mongo的Reactive Repositories,如本链接所述,请帮我启用Oracle的Reactive Repositories.
我已经尝试从存储库接口扩展ReactiveCrudRepository,但由于Spring Data JPA没有实现反应式API方法,因此失败了.
有没有人将spring-webflux与netty(http / 2)一起使用?
Spring文档说:
您可以使用
server.http2.enabled配置属性在Spring Boot应用程序中启用HTTP / 2支持。该支持取决于所选的Web服务器和应用程序环境,因为JDK8不立即支持该协议。Spring Boot不支持HTTP / 2协议的明文版本h2c。因此,您必须先配置SSL。
该标志server.http2.enabled对我不起作用。
我正在使用:
请看一下我的配置:
HTTPS也可以正常工作。但是协议仍然相同(http / 1.1)
这是ALPN的问题吗?我应该将我的应用程序升级到JDK10吗?我将不胜感激任何建议。谢谢。