Mój kod wygląda tak:
package io.test;
import org.eclipse.jetty.websocket.api.Session;
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage;
import org.eclipse.jetty.websocket.api.annotations.WebSocket;
@WebSocket(maxTextMessageSize = 64 * 1024)
public class ChatWebsocket {
@OnWebSocketMessage
public void onText(Session session, String message) {
if (session.isOpen()) {
System.out.printf("Echoing back message [%s]%n", message);
// echo the message back
session.getRemote().sendString(message, null);
}
}
}
package io.test;
import io.javalin.Javalin;
public class Application {
public static void main(String[] args) {
Javalin app = Javalin.create().start(7000);
app.ws("/websocket/:id", ChatWebsocket.class);
app.get("/", ctx -> ctx.result("Hello World"));
}
}
Niestety kompilator "krzyczy" taki komunikat:
error: incompatible types: Class<ChatWebsocket> cannot be converted to Consumer<WsHandler>
app.ws("/websocket/:id", ChatWebsocket.class);
Według dokumentacji do metody "ws" można przekazywać tylko lambdy
Link do dokumentacji:
https://javalin.io/documentation#websockets
Jednak w starszych wersjach Javalin można było przekazać cały object
Link:
https://javalin.io/news/2017/09/22/javalin-0.5.1-released.html
Czy jest możliwość żeby można było przekazać objekt wraz z zależnościami, z której websocket ma skorzystać?
app.ws("/websocket", new WebSocketObject(param1, param2));