Websocket端点返回404

时间:2017-08-17 08:48:31

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

我是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);
    }
}

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

我得到了200:

ws://localhost:8080 

我得到404(没有握手):

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

我能做些什么才能到达websocket?显然我的URL不正确,或者我编写服务器端点的方式完全错误。

2 个答案:

答案 0 :(得分:0)

听起来这些网页根本没有 - 根据您的WildFly版本,可能需要启用它们。尝试添加

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

jboss-web

jboss-web.xml节点下

答案 1 :(得分:0)

我找到了解决方案..我的不好,WebSocket是在错误的模块(ejb)中。将类移动到Web模块解决了它。