繁体   English   中英

在灰熊上设置WebSocket SSL

[英]Setting websocket SSL on grizzly

我正在尝试使用灰熊容器上的“ javax.websocket.server.ServerEndpoint”通过SSL配置WebSocket。 但是我找不到任何将SSL属性设置为我的端点的方法。

我的端点代码:

import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint(
    Value="/ptiWs",
    decoders = {ApiMessage.ApiCoder.class},
)
public class WebsocketEndpoint {

   private static final Logger LOG = LogManager.getLogger(WebsocketEndpoint.class);
   private final ApiVisitorImpl apiVisitor;

    public WebsocketEndpoint(){
    }

    @OnOpen
    public void onOpen(Session session){
        LOG.info("New connection open : " + session.toString());
    }


    @OnMessage
    public void message(Session session, ApiMessage message){
        LOG.info("New message arrive " + message.toString());
    }
}

最后,使用以下代码将端点添加到我的Grizzly实例:

Server ptiWebsocket = new Server("localhost", 8025, "/", null, WebsocketEndpoint.class);
ptiWebsocket.start();

我已经为玻璃鱼完成了这项工作,这很容易,但是在这里我找不到任何继续进行的方法。

和依赖:

   <dependency>
        <groupId>javax.websocket</groupId>
        <artifactId>javax.websocket-api</artifactId>
        <version>1.0</version>
        <type>jar</type>
    </dependency>

    <dependency>
        <groupId>org.glassfish.tyrus</groupId>
        <artifactId>tyrus-server</artifactId>
        <version>1.7</version>
    </dependency>

    <dependency>
        <groupId>org.glassfish.tyrus</groupId>
        <artifactId>tyrus-container-grizzly-server</artifactId>
        <version>1.7</version>
    </dependency> 

谢谢

查看tyrus源代码,似乎不支持立即使用。 您需要创建一个新的ServerContainerFactory,就像org.glassfish.tyrus.container.grizzly.server.GrizzlyServerContainer一样。 从Github中获取代码。 您可以创建自己的GrizzlySSLServerContainer。 然后,您将在start方法中将SSL配置添加到NetworkListener。 然后,可以使用JAR将新的GrizzlySSLServerContainer类的全限定名称添加到META-INF / services / org.glassfish.tyrus.spi.ServerContainerFactory中,而Tyrus应该选择它。

它有点hacky,必须复制/粘贴代码很烂,但是应该可以。

1.)将GrizzlyServerContainer复制到新的GrizzlySSLServerContainer类。

2.)将提供SSL配置数据的方法添加到新的Container类中。

3.)将数据添加到NetworkListener以实例化SSL

4.)将新类添加到jar的META-INF / serivces目录中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM