Соедините javascript WebSocket с Java ServerSocket - PullRequest
0 голосов
/ 26 мая 2018

Я пытаюсь соединить javascript с Java, но получаю некоторые ошибки:

Ошибка на стороне javascript:

WebSocket connection to 'wss://127.0.0.1:1234/' failed: WebSocket opening handshake timed out

Ошибка на стороне Java:

java.io.EOFException
at java.io.DataInputStream.readFully(DataInputStream.java:197)
at java.io.DataInputStream.readUTF(DataInputStream.java:609)
at java.io.DataInputStream.readUTF(DataInputStream.java:564)
at networkingtest.Server.start(Server.java:29)
at networkingtest.NetworkingTest.main(NetworkingTest.java:9)

Вот мой код JavaScript:

var connection;

function init() {
    connection = new WebSocket('wss://127.0.0.1:1234/');
    connection.onopen = function () {
        connection.send('Ping');
    };
}

Вот код Java:

package networkingtest;

import java.io.*;
import java.net.*;

public class Server {

    public ServerSocket ss;
    public Socket s;
    public int port;

    public Server(int p) {
        port = p;
    }

    public void start() {
        try {
            ss = new ServerSocket(port);
            s = ss.accept();
            DataInputStream di = new DataInputStream(s.getInputStream());
            while (true) {
                if (s.isConnected()) {
                    System.out.println(di.readUTF());
                } else {
                    System.exit(0);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

Я не вижу, что я делаю неправильно.Это ошибка на стороне Java или на стороне JavaScript?

1 Ответ

0 голосов
/ 26 мая 2018

WebSocket - это не обычный TCP-сокет.Он имеет целую схему подключения, схему безопасности и формат данных.Таким образом, клиент webSocket может общаться только с сервером webSocket.Если вы попытаетесь подключить клиент webSocket к серверу, не являющемуся webSocket, клиент не увидит правильный ответ и немедленно отключится.Ошибка, которую вы видите на стороне клиента:

WebSocket opening handshake timed out

, заключается в том, что клиент не увидел ответ, который он ожидал от сервера при первом подключении.

Вы можете использовать библиотеку webSocketс вашим сервером Java для реализации сервера webSocket в вашем коде Java.

...