Раньше я использовал TCP-сокеты для создания соединения, но была проблема с передачей сообщений, и теперь я пробую это с помощью WebSockets.Проблема в том, что мне нужно установить соединение с использованием Java 6, и я использую Jetty в качестве сервера, но поддерживает ли Jetty Java 6?Я знаю, что он совместим с Java 8, но в этой ситуации я не могу использовать Java 8.
Это код, который я использовал для создания TCPClient, может кто-нибудь помочь мне создать соединение с помощью WebSockets с Java 6.
public static void main (String args[]) {
String host = "192.168.14.214";
int port = 9080;
new Client(host, port);
}
public Client(String host, int port) {
try {
String serverHostname = new String("192.168.14.214");
System.out.println("Connecting to host " + serverHostname + " on port " + port + ".");
Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;
try {
echoSocket = new Socket(serverHostname, 9080);
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Unknown host: " + serverHostname);
System.exit(1);
} catch (IOException e) {
System.err.println("Unable to get streams from server");
System.exit(1);
}
AuthReqBean authReqBean = new AuthReqBean();
AuthReqBean.AuthRequest authReq = authReqBean.new AuthRequest();
authReq.setLgnNme("username");
authReq.setPwd("asd");
authReqBean.setAuthRequest(authReq);
ObjectWriter ow = new
ObjectMapper().writer().withDefaultPrettyPrinter();
String json = ow.writeValueAsString(authReqBean);
System.out.println(json);
out.write(json);
while (true) {
System.out.print("client: ");
String userInput = in.readLine();
System.out.println("server: " + userInput);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Я пробовал несколько тестовых кодов, чтобы создать соединение с помощью веб-сокетов, но каждый раз, когда он терпит неудачу, когда я использую Java 6, но когда его Java 8, он работает нормально.
public class SimpleEchoClient {
public static void main(String[] args)
{
String destUri = "ws://echo.websocket.org";
WebSocketClient client = new WebSocketClient();
SimpleEchoSocket socket = new SimpleEchoSocket();
try
{
client.start();
URI echoUri = new URI(destUri);
ClientUpgradeRequest request = new ClientUpgradeRequest();
client.connect(socket,echoUri,request);
System.out.printf("Connecting to : %s%n",echoUri);
socket.awaitClose(5,TimeUnit.SECONDS);
}
catch (Throwable t)
{
t.printStackTrace();
}
finally
{
try
{
client.stop();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}
public SimpleEchoSocket()
{
this.closeLatch = new CountDownLatch(1);
}
public boolean awaitClose(int duration, TimeUnit unit) throws InterruptedException
{
return this.closeLatch.await(duration,unit);
}
@OnWebSocketClose
public void onClose(int statusCode, String reason)
{
System.out.printf("Connection closed: %d - %s%n",statusCode,reason);
this.session = null;
this.closeLatch.countDown(); // trigger latch
}
@OnWebSocketConnect
public void onConnect(Session session)
{
System.out.printf("Got connect: %s%n",session);
this.session = session;
try
{
Future<Void> fut;
fut = session.getRemote().sendStringByFuture("Hello");
fut.get(2,TimeUnit.SECONDS); // wait for send to complete.
fut = session.getRemote().sendStringByFuture("Thanks for the conversation.");
fut.get(2,TimeUnit.SECONDS); // wait for send to complete.
session.close(StatusCode.NORMAL,"I'm done");
}
catch (Throwable t)
{
t.printStackTrace();
}
}
@OnWebSocketMessage
public void onMessage(String msg)
{
System.out.printf("Got msg: %s%n",msg);
}