我正在尝试让 WebSockets 在 Grizzly/Glassfish 上工作。我克隆了the sample WebSockets chat application ,构建它并将其部署到 Glassfish 3.1.2。但是,我无法连接 WebSocket。 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方法中实现握手逻辑?
最佳答案
我尝试在 glassfish 3.1.2 上使用 grizzly-websockets-chat-2.1.9.war 并得到相同的错误。
其中声明使用此处找到的版本(我认为该版本会表明它较旧,但文件上的时间戳是 2012 年 1 月 30 日):
war
来源
通过利用这场 war ,一切都会顺利。
对于那些喜欢使用 glassfish Web 控制台的人。您可以通过以下方式启用网络套接字:
配置 > 服务器配置 > 网络配置 > 协议(protocol) > http-listener-1,然后 HTTP 选项卡 > 滚动到底部并选中 Websockets 支持。
注意配置 > default-config > ...也有相同的选项
您可能会发现这个大陆上还有一个终端。
关于websocket - Grizzly/Glassfish - 无法建立 websockets 握手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9964716/