JavaScript客户端从Java Web Socket读取数据

3

我有一个Java Websocket,它不断发送一堆坐标信息,我希望能够在js客户端上持续拦截这些信息。以下是Java代码的简化版本:

public static void main(String args[]) throws IOException {
    final int portNumber = 2500;
    System.out.println("Creating server socket on port " + portNumber);
    ServerSocket serverSocket = new ServerSocket(portNumber);

    while (true) {
        Socket socket = serverSocket.accept();
        OutputStream os = socket.getOutputStream();
        PrintWriter pw = new PrintWriter(os, true);

        pw.println("test");
        pw.println("\r");

    }
    //later on close connection
    pw.close();
    socket.close();
}

关于我的js代码,看起来是这样的:

var connection; 
   try{
         connection = new MozWebSocket('ws://localhost:2500/');
   }catch(e){
         connection = new WebSocket('ws://localhost:2500/');
   }
connection.onopen = function () {console.log('opened');};

connection.onclose = function(evt) { console.log("closed"); };
connection.onmessage = function(evt) { console.log("message"); };
connection.onerror = function(evt) { console.log(evt); };

运行后,我收到了类似于“Error during WebSocket handshake: No response code found in status line”的错误消息,我理解这是JavaScript客户端难以克服的问题。 因此,我想知道是否应该重新安排实现WebSocket的方式或者应该创建一个WebSocket服务器?但我不确定它是否仍然允许我始终读取套接字将广播的数据。 提前感谢您的帮助。
1个回答

1

你知道 WebSocket 是一种协议吗?它不仅仅是发送纯文本。

我制作了一个名为 Bowser 的开源 Java Web 服务器,支持 WebSocket。你可以在这里查看一些代码以获取灵感,或者直接使用该库:https://github.com/mirraj2/Bowser/tree/master/src/bowser/websocket

启动 WebSocket 服务器就像这样简单:

int port = 12345;
 new WebSocketServer(port).onOpen(socket->{
   System.out.println("Client connected: " + socket);
 }).start();

谢谢,但我该如何准确地使用你的类?我尝试导入并将其添加到构建路径中,但似乎找不到 new WebSocketServer()。 - Estarossa
你把哪个类添加到了构建路径? - satnam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接