Servus,
ich stehe mal wieder auf dem Schlauch, diesmal geht es darum einen WebSocketServer aufzusetzen (Server und Client beide Local)
Der Client (Socket.IO) funktioniert, nutze den auch bei anderen WebSockets, wenn ich verbinden möchte bekomme ich bei EVENT_CONNECT_ERROR
hier mein Code der wie gesagt bei anderen funktioniert
Als WebSocketServer setze ich Undertow ein (Netty wollte nicht so wie ich )
https://github.com/undertow-io/undertow
der Server startet auch
hier der Code:
wie der Server selbst dann später die Daten bekommt habe ich noch nicht wirklich verstanden, aber soweit bin ich auch noch gar nicht da sich der Client nicht verbindet.
Mit dem Beispielcode für den http Server (um zu testen ob überhaupt as geht) hatte ich erfolg
Was ich später im Endeffekt machen möchte ist Daten via MQTT zu empfangen (das geht auch alles) dort die wichtigen raus zu filtern und dann per WebSocket zu verteilen. Sprich wenn die Message den Anforderungen entspricht wird sie weitergereicht, nur halt per WS.
Ja ich weiß langer Text, aber evtl kann mich jemand in die richtige Richtung stupsen.
ich stehe mal wieder auf dem Schlauch, diesmal geht es darum einen WebSocketServer aufzusetzen (Server und Client beide Local)
Der Client (Socket.IO) funktioniert, nutze den auch bei anderen WebSockets, wenn ich verbinden möchte bekomme ich bei EVENT_CONNECT_ERROR
Code:
io.socket.engineio.client.EngineIOException: websocket error
hier mein Code der wie gesagt bei anderen funktioniert
Java:
System.out.println("Start: ");
IO.Options opts = new IO.Options();
opts.path = "/myapp";
opts.port = 8080;
opts.transports = new String[] {WebSocket.NAME};
socket = IO.socket("http://127.0.0.1", opts);
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
@Override
public void call(Object... args) {
System.out.println("EVENT_CONNECT");
socket.send("42");
}
});
socket.on(Socket.EVENT_MESSAGE, new Emitter.Listener() {
@Override
public void call(Object... args) {
System.out.println("EVENT_MESSAGE");
}
});
socket.on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() {
@Override
public void call(Object... args) {
System.out.println("EVENT_CONNECT_ERROR" + args[0].toString());
}
});
socket.on("mqtt", new Emitter.Listener() {
@Override
public void call(Object... args) {
System.out.println("EVENT_MESSAGE" + args[0].toString());
}
});
socket.on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {
@Override
public void call(Object... args) {
System.out.println("EVENT_DISCONNECT");
}
});
socket.connect();
Als WebSocketServer setze ich Undertow ein (Netty wollte nicht so wie ich )
https://github.com/undertow-io/undertow
der Server startet auch
Code:
Jul 31, 2017 2:07:45 PM org.xnio.Xnio <clinit>
INFO: XNIO version 3.4.6.Final
Jul 31, 2017 2:07:46 PM org.xnio.nio.NioXnio <clinit>
INFO: XNIO NIO Implementation Version 3.4.6.Final
hier der Code:
Java:
Undertow server = Undertow.builder()
.addHttpListener(8080, "localhost")
.setHandler(path()
.addPrefixPath("/myapp", websocket(new WebSocketConnectionCallback() {
@Override
public void onConnect(WebSocketHttpExchange exchange, WebSocketChannel channel) {
channel.getReceiveSetter().set(new AbstractReceiveListener() {
@Override
protected void onFullTextMessage(WebSocketChannel channel, BufferedTextMessage message) {
System.out.println("Connect Msg ");
WebSockets.sendText("Test", channel, null);
WebSockets.sendText(message.getData(), channel, null);
}
});
channel.resumeReceives();
}
})))
.build();
server.start();
wie der Server selbst dann später die Daten bekommt habe ich noch nicht wirklich verstanden, aber soweit bin ich auch noch gar nicht da sich der Client nicht verbindet.
Mit dem Beispielcode für den http Server (um zu testen ob überhaupt as geht) hatte ich erfolg
Java:
Undertow server = Undertow.builder()
.addHttpListener(8080, "localhost")
.setHandler(new HttpHandler() {
@Override
public void handleRequest(final HttpServerExchange exchange) throws Exception {
exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
exchange.getResponseSender().send("Hello World");
}
}).build();
server.start();
Was ich später im Endeffekt machen möchte ist Daten via MQTT zu empfangen (das geht auch alles) dort die wichtigen raus zu filtern und dann per WebSocket zu verteilen. Sprich wenn die Message den Anforderungen entspricht wird sie weitergereicht, nur halt per WS.
Ja ich weiß langer Text, aber evtl kann mich jemand in die richtige Richtung stupsen.