【问题标题】:Websocket endpoint returns 404Websocket 端点返回 404
【发布时间】:2017-08-17 08:48:31
【问题描述】:

我是 Java EE 7 websocket 原理的新手。

我在 Wildfly 10 上部署了 Java EE 7 服务器。

我已经配置了上下文路径和应用程序路径。我可以通过http://localhost:8080/context_path/app_path/something 访问服务器。

现在,我已经声明了一个简单的 ServerEndpoint:

@Stateful
@ServerEndpoint("websockets/stream")
public class StreamServerEndpoint {

    private static final Logger LOG = Logger.getLogger(StreamServerEndpoint.class);

    @Inject
    ByteBufferStore byteBufferStore;

    @Inject
    private EventListener listener;

    @OnOpen
    public void open(Session session) {
        LOG.info("Session opened and registered");
        listener.register(session);
    }

    @OnMessage
    public void message(Session session, ByteBuffer buffer) {
        LOG.info("Message retrieved");
        session.getUserProperties().put("buffer", buffer);
        //byteBufferStore.retrieve().ifPresent(byteBuffer -> Common.sendBuffer(session, buffer));
    }

    @OnClose
    public void close(Session session) {
        listener.unregister(session);
    }
}

另一方面,我有一个应该连接到 websocket 的外部 Angular 2 项目,但我收到错误状态代码:404、200,具体取决于链接。

我用这个得到 200:

ws://localhost:8080 

我得到 404(不可能握手):

ws://localhost:8080/context_path/app_path/websockets/stream  

我可以做些什么来访问 websocket?显然我的 URL 不正确,或者我对服务器端点的编程方式完全错误。

【问题讨论】:

标签: jakarta-ee http-status-code-404 java-websocket


【解决方案1】:

听起来 websocket 根本没有打开 - 根据您的 WildFly 版本,可能需要启用它们。尝试添加

<enable-websockets>true</enable-websockets>

jboss-web.xmljboss-web 节点下

【讨论】:

    【解决方案2】:

    我找到了解决方案。我的错,WebSocket 位于错误的模块 (ejb) 中。将类移动到 web 模块解决了它。

    【讨论】:

    • 你的意思是我们不能在ejb模块中有websocket?我们只能在战争模块中拥有它?
    猜你喜欢
    • 2020-12-23
    • 2019-02-28
    • 2019-11-14
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    相关资源
    最近更新 更多