代码之家  ›  专栏  ›  技术社区  ›  amsjntz

用JavaServer连接JavaScript WebSoCub

  •  0
  • amsjntz  · 技术社区  · 7 年前

    我试图用Java连接JavaScript,但是我得到了一些错误:

    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 回复  |  直到 7 年前
        1
  •  1
  •   jfriend00    7 年前

    WebSocket不是普通的TCP套接字。它有完整的连接方案、安全方案和数据格式。因此,WebSocket客户机只能与WebSocket服务器通信。如果尝试将WebSocket客户端连接到非WebSocket服务器,则客户端将看不到正确的响应,并将立即断开连接。在客户端看到的错误:

    WebSocket opening handshake timed out
    

    是因为客户端在第一次连接时没有看到服务器的响应。

    可以使用Java服务器与WebSosiver库一起实现Java代码中的WebSoCulver服务器。