我是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不正确,或者我编写服务器端点的方式完全错误。
答案 0 :(得分:0)
听起来这些网页根本没有 - 根据您的WildFly版本,可能需要启用它们。尝试添加
<enable-websockets>true</enable-websockets>
在jboss-web
jboss-web.xml
节点下
答案 1 :(得分:0)
我找到了解决方案..我的不好,WebSocket是在错误的模块(ejb)中。将类移动到Web模块解决了它。