Jakarta.Websocket Tomcat Endpoint Test хорошо работает с клиентом HTML/JavaScript, но блоки вызова подключения от клиента Java в Eclipse
Конечная точка сервера:
package webs;
import java.io.IOException;
import jakarta.websocket.OnMessage;
import jakarta.websocket.Session;
import jakarta.websocket.server.ServerEndpoint;
@ServerEndpoint("/webs")
public class Webs {
@OnMessage
public void onMessage(Session session, String message) throws IOException {
// Handle new messages
session.getBasicRemote().sendText("0. GOT IT: " + message, false);
}
}
< /code>
javascript, который работает: < /p>
Your First WebSocket!
var wsUri = "ws://localhost:8090/webs/webs";
function init() {
output = document.getElementById("output");
}
function send_message() {
websocket = new WebSocket(wsUri);
websocket.onopen = function(evt) {
onOpen(evt)
};
websocket.onmessage = function(evt) {
onMessage(evt)
};
websocket.onerror = function(evt) {
onError(evt)
};
}
function onOpen(evt) {
writeToScreen("Connected to Endpoint!");
doSend(textID.value);
}
function onMessage(evt) {
writeToScreen("Message Received: " + evt.data);
}
function onError(evt) {
writeToScreen('ERROR: ' + evt.data);
}
function doSend(message) {
writeToScreen("Message Sent: " + message);
websocket.send(message);
//websocket.close();
}
function writeToScreen(message) {
var pre = document.createElement("p");
pre.style.wordWrap = "break-word";
pre.innerHTML = message;
output.appendChild(pre);
}
window.addEventListener("load", init, false);
Hello World WebSocket Client
< /code>
java, которая блокирует при попытке подключиться: < /p>
...
import jakarta.websocket.ClientEndpoint;
import jakarta.websocket.ContainerProvider;
import jakarta.websocket.EndpointConfig;
import jakarta.websocket.Session;
import jakarta.websocket.WebSocketContainer;
...
@ClientEndpoint
public class QesbWS implements QesbPSAdapter {
protected Session m_session = null;
...
Iterator providers = ServiceLoader.load(ContainerProvider.class).iterator();
if (providers.hasNext()) {
do {
ContainerProvider impl = providers.next();
System.out.println("WS: " + impl.toString());
} while (providers.hasNext());
}
final WebSocketContainer container = (WebSocketContainer) ContainerProvider.getWebSocketContainer();
try {
String uri = "ws://localhost:8090/webs/webs/";
m_session = container.connectToServer(this, URI.create(uri));
} catch (Exception e) {
e.printStackTrace();
}
< /code>
поставщик контейнеров, который у меня есть:
ws: org.glassfish.tyrus.container.grizzly.client.grizzlycontainerprovider@569bf9eb < /p>
Подробнее здесь: https://stackoverflow.com/questions/795 ... ver-blocks