Új hozzászólás Aktív témák

  • Nojbee

    tag

    Sziasztok

    Szeretném megoldani, hogy ha történik egy esemény (mentés), akkor egy másik felhasználónak generálódjon egy üzenet, hogy "valami elkészült, nézd meg". Ez úgy jelenne, hogy egy kis üzenet ikonnál frissül az üzenetek száma. Ha rákattint az ikonra, kinyílik egy panel, amiben ott az üzenet.

    Java-t és Angular2-t használok, úgyhogy websocket-et néztem ki a megoldásra.
    Egyelőre csak tesztelni szeretném a kapcsolatot, de a handshake sem jön össze.

    Példákat találtam megoldásra, a kliens oldal jónak is tűnik, mert a request elmegy

    Viszont elszáll hibával:
    09:59:13,527 ERROR [io.undertow.proxy] (default I/O-5) UT005028: Proxy request to /company-component-web/messageServer failed: java.io.IOException: UT001000: Connection closed
    at io.undertow.client.http.HttpClientConnection$ClientReadListener.handleEvent(HttpClientConnection.java:529)
    at io.undertow.client.http.HttpClientConnection$ClientReadListener.handleEvent(HttpClientConnection.java:472)
    at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
    at org.xnio.conduits.ReadReadyHandler$ChannelListenerHandler.readReady(ReadReadyHandler.java:66)
    at org.xnio.nio.NioSocketConduit.handleReady(NioSocketConduit.java:88)
    at org.xnio.nio.WorkerThread.run(WorkerThread.java:559)

    A java oldali kód:
    @ServerEndpoint("/messageServer")
    public class MessageServerEndpoint {

    @OnOpen
    public void onOpen(Session session) throws IOException {
    session.getBasicRemote().sendText("onOpen");
    }

    @OnMessage
    public String onMessage(String message) {
    return message + " (from your server)";
    }

    @OnError
    public void onError(Throwable t) {
    t.printStackTrace();
    }

    @OnClose
    public void onClose(Session session) {
    }
    }

    pom.xml-ben felvettem a javax.websocket
    jboss-web.xml-ben pedig <enable-websockets>true</enable-websockets>

    Sajnos nem sok tapasztalatom van még ezen a téren, úgyhogy elakadtam. Esetleg tudna valaki segíteni továbblépni a problémán?

    Köszönöm :R

    Kliens oldalt is bemáoslom azért:
    Service:
    import {Injectable} from "@angular/core";
    import { Subject } from 'rxjs/Subject';

    @Injectable()
    export class WebSocketService {

    private subject: Subject<any> = new Subject();
    private ws : WebSocket;

    connect(_url: string): void {
    let self = this;
    this.ws = new WebSocket(_url);
    this.ws.onopen = function(evt) {
    self.ws.send("Pinging from angular2!");
    };
    this.ws.onclose = function(evt) {};
    this.ws.onmessage = function(evt) {
    console.log(evt.data);
    self.subject.next(evt.data);
    };
    this.ws.onerror = function(evt) {};
    }

    onMessageSubject(): Subject<any> {
    return this.subject;
    }
    }

    amit innen hívok:
    constructor(private httpService: CommonHttpService<MessageBoardVM>, public webSocketService: WebSocketService) {
    this.webSocketService.connect("ws://" + document.location.host + document.location.pathname + "messageServer");
    this.webSocketService.onMessageSubject().subscribe(
    value => {this._serverInfo = value;}
    );
    }

Új hozzászólás Aktív témák