2017-08-17 13 views
0

Je suis novice dans le domaine de la Websocket Java EE 7.Websocket endpoint returns 404

I ont un serveur Java EE 7 déployé sur wildfly 10.

j'ai configuré un chemin de contexte et un chemin d'application. Je suis capable d'atteindre le serveur par http://localhost:8080/context_path/app_path/something.

Maintenant, j'ai déclaré simple 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); 
    } 
} 

De l'autre côté, j'ai un projet angulaire 2 externe qui doit se connecter au websocket, mais je reçois des codes d'état d'erreur: 404, 200, en fonction du lien.

Je reçois 200 avec ceci:

ws://localhost:8080 

-je obtenir 404 (pas possible poignée de main) avec ceci:

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

Que puis-je faire pour atteindre le websocket? Apparemment, mon URL n'est pas correcte, ou la façon dont j'ai programmé le point de terminaison du serveur est totalement fausse.

+0

Eh bien, 404 n'est pas trouvé, pas de prise de contact possible. Pouvez-vous vous connecter au serveur avec un client websocket différent? –

+0

Malheureusement, les demandes de différents clients websocket n'atteignent pas le serveur. – cayz

+0

veuillez vous référer ci-dessous URL pour l'exemple en cours https://examples.javacodegeeks.com/core-java/real-time-applications-angularjs-java-part-3/ https://coderwall.com/p/uhqeqg/html5-websocket-avec-angularjs –

Répondre

0

Il semble que les WebSockets ne soient pas activées - selon votre version de WildFly, elles peuvent devoir être activées. Essayez d'ajouter

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

sous le nœud jboss-web de votre jboss-web.xml

0

J'ai trouvé la solution .. Mon mauvais, le WebSocket était dans le mauvais module (ejb) .. Déplacement de la classe au module Web a résolu le problème .