【问题标题】:Javascript client reading from java web socket从 Java Web 套接字读取的 Javascript 客户端
【发布时间】:2016-06-22 18:08:19
【问题描述】:

我有一个 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); };

运行此程序后,我得到类似“WebSocket 握手期间出错:在状态行中找不到响应代码”,我知道这是一个很难从 javascript 客户端克服的问题。 因此,我想知道是否应该重新安排实现 websocket 的方式,还是应该创建一个 websocket 服务器?但我不确定它是否仍然允许我不断读取我的套接字将在所有时间广播的数据。 提前谢谢你。

【问题讨论】:

    标签: javascript java sockets websocket port


    【解决方案1】:

    您意识到 websockets 是一种协议,对吧?它不仅仅是发送明文。

    我制作了一个名为 Bowser 的开源 Java 网络服务器,它支持 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();
    

    【讨论】:

    • 谢谢,但是我该如何使用你的课程呢?我尝试导入并将其添加到构建路径,但我似乎找不到新的 WebSocketServer()。
    • 你在构建路径中添加了哪个类?
    猜你喜欢
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多