У меня есть clientendpoint
класс для websocket
в tomcat 7.0.53
. Он базируется этого примера на сайте https://blog.openshift.com/how-to-build-java-websocket-applications-using-the-jsr-356-api/Tomcat clientendpoint websocket продолжает закрываться
import java.io.IOException;
import java.net.URI;
import java.util.ArrayList;
import javax.websocket.ClientEndpoint;
import javax.websocket.CloseReason;
import javax.websocket.ContainerProvider;
import javax.websocket.DeploymentException;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.WebSocketContainer;
@ClientEndpoint
public class connect {
private static ArrayList<Session> sessionList = new ArrayList<Session>();
public connect(URI endpointURI) throws DeploymentException, IOException
{
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
container.connectToServer(this, endpointURI);
}
@OnOpen
public void onOpen(Session session) throws IOException
{
sessionList.add(session);
System.out.println(session.getId());
session.getBasicRemote().sendText("hello");
}
public void sendMessage(String message) throws IOException
{
for(Session session : sessionList){
//asynchronous communication
session.getBasicRemote().sendText(message);
}
}
@OnClose
public void onClose(Session session){
sessionList.remove(session);
System.out.println("here");
}
@OnError
public void onError(Throwable t, Session session){
System.out.println("tedt");
}
}
Я тогда следующий код для запуска клиента конечной
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import javax.websocket.DeploymentException;
public class test {
public static void main(String[] args) throws DeploymentException, IOException, URISyntaxException {
// TODO Auto-generated method stub
connect connect = new connect(new URI("ws://localhost:8080/example/talk"));
connect.sendMessage("now");
}
}
Клиент не удается успешно подключиться к серверу WebSocket, однако затем он получает когда я пытаюсь отправить сообщение или что-то сделать, я знаю это, поскольку функция onError
вызывается при попытке отправить сообщение из функции onOpen
. Почему закрывается websocket
сразу после его подключения к серверу?
Спасибо и да, конечно, о получении сообщений назад, просто доказательство концепции, по крайней мере, я могу общаться с сервером. – jgr208
Я пытаюсь выполнить эту работу, у меня есть конечная точка сервера, но я всегда получаю ошибку. Не удалось найти класс реализации. для ContainerProvider, у меня есть javax websocket jar в моем пути сборки –
Может быть, задайте новый вопрос? –