2

我正在尝试让 WebSockets 在 Grizzly / Glassfish 之上工作。我已经克隆了示例 WebSockets 聊天应用程序,构建它并将其部署到 Glassfish 3.1.2。但是,我无法让 WebSockets 连接。WebSockets 握手失败,因为我收到 405(不允许的方法)响应。这是有道理的,因为 Servlet 中有什么:

public class WebSocketsServlet extends HttpServlet {

    private final ChatApplication app = new ChatApplication();

    @Override
    public void init(ServletConfig config) throws ServletException {
        WebSocketEngine.getEngine().register(app);
    }

    @Override
    public void destroy() {
        WebSocketEngine.getEngine().unregister(app);
    }
}

没有指定doGet方法,所以我想知道是否需要更多配置,或者您是否需要自己在servlet doGet方法中实现握手逻辑?

4

2 回答 2

2

我试图在 glassfish 3.1.2 上使用 grizzly-websockets-chat-2.1.9.war 并得到同样的错误。

遵循此页面http://www.java.net/forum/topic/glassfish/glassfish/websocket-connection-not-establishing-glasshfish-server-how-fix-it-0的建议

哪些状态使用此处找到的版本(我认为该版本会表明它较旧,但是文件上的时间戳是 2012 年 1 月 30 日):

战争

https://maven.java.net/service/local/artifact/maven/redirect?r=releases&g=com.sun.grizzly.samples&a=grizzly-websockets-chat&v=1.9.46&e=war

来源

https://maven.java.net/service/local/artifact/maven/redirect?r=releases&g=com.sun.grizzly.samples&a=grizzly-websockets-chat&v=1.9.46&e=jar&c=sources

通过使用那场战争,一切正常。

对于那些喜欢使用 glassfish 网络控制台的人。您可以通过以下方式启用网络套接字:

配置 > 服务器配置 > 网络配置 > 协议 > http-listener-1,然后 HTTP 选项卡 > 滚动到底部并选中 Websockets 支持。

注意 Configurations > default-config > ... 也有相同的选项

你可能会发现这块大陆更多的是保留一个终端。

于 2012-04-02T03:35:35.493 回答
1

看来您还没有启用 websocket 支持(默认禁用)。

发出以下命令,然后重新启动服务器:

asadmin 设置 configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.websockets-support-enabled=true

您可以将 http-listener-1 替换为您希望启用 WS 支持的任何 http-listener。

于 2012-04-01T16:37:24.480 回答