小编Ary*_*kat的帖子

如何获取现有的websocket实例

我正在开发一个使用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)

提前致谢.

java singleton instance websocket java-ee-7

13
推荐指数
2
解决办法
2万
查看次数

将POST请求中的二进制输入数据(gzip压缩)发送到Spring Web Flux

我正在尝试将一堆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/jsonContent-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,从未奏效.

java spring gzip binary-data spring-webflux

8
推荐指数
0
解决办法
875
查看次数

如何在websocket端点中获取cookie值

我在我的应用程序中使用基于JavaEE 7的Websocket-API.

我需要访问我的websocket端点中的cookie中设置的值[Annotated one : @ServerEndpoint ("/websocket") ].我该怎么办?

@onOpen()方法就在那里,当建立与此websocket端点的连接时,将自动调用该方法.我想在这个方法中访问那里的cookie值.

我知道如何在servlet或JSP中做到这一点,但我是Websockets的新手.

请帮我这样做.提前致谢.

cookies websocket java-ee-7

6
推荐指数
2
解决办法
6147
查看次数

如何使用Spring为Oracle数据库启用Reactive Repositories?

我需要使用Oracle数据库和Spring,我可以轻松选择Spring Data JPA,但我的所有程序都应该是被动的.

就像Spring支持Couchbase和Mongo的Reactive Repositories,如本链接所述,请帮我启用Oracle的Reactive Repositories.

我已经尝试从存储库接口扩展ReactiveCrudRepository,但由于Spring Data JPA没有实现反应式API方法,因此失败了.

java oracle spring reactive-programming spring-data-jpa

6
推荐指数
0
解决办法
971
查看次数

将spring-webflux微服务切换到http / 2(网络)

有没有人将spring-webflux与netty(http / 2)一起使用?

Spring文档说:

您可以使用server.http2.enabled配置属性在Spring Boot应用程序中启用HTTP / 2支持。该支持取决于所选的Web服务器和应用程序环境,因为JDK8不立即支持该协议。Spring Boot不支持HTTP / 2协议的明文版本h2c。因此,您必须先配置SSL。

该标志server.http2.enabled对我不起作用。

我正在使用:

  1. JDK8
  2. org.springframework.boot:spring-boot-starter-parent:2.0.2.RELEASE
  3. 净值4.1.24。最终

请看一下我的配置:

application.yml

HTTPS也可以正常工作。但是协议仍然相同(http / 1.1)

在此处输入图片说明

这是ALPN的问题吗?我应该将我的应用程序升级到JDK10吗?我将不胜感激任何建议。谢谢。

netty http2 project-reactor alpn spring-webflux

6
推荐指数
2
解决办法
3189
查看次数