java websocket 如何实现消息同步返回,类似 http 请求数据返回结果

已解决 websocket
0

项目使用 springboot,目前使用 websocket 与安卓客户端完成了基本通信步骤,但是目前有个需求是,向客户端发送消息,等待客户端返回的结果。

java-websocket.png

如果觉得这对你有用,请随意赞赏,给与作者支持
回答 (2)
2 个回答

0

已采纳

服务端:

package com.eapp.demo;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerDemo {
    public static void main(String[] args) {
        ServerSocket server=null;
        try {
            server=new ServerSocket(20006);
            Socket socket=server.accept(); // 阻塞过程
            // 获取客户端发送过来的数据
            BufferedReader buf=new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String info ="server 响应数据--推送给客户端:" + buf.readLine();
            System.out.println(info);
            // 获取 Socket 的输出流,用来向客户端发送数据
            PrintWriter out=new PrintWriter(socket.getOutputStream());
            out.println(info);
            out.flush();
        } catch (IOException e) {
        }
    }
}

客户端:

package com.eapp.demo;

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

public class ClientDemo {
    public static void main(String[] args) throws IOException {
        // 客户端请求与本机在 20006 端口建立 TCP 连接
        Socket socket = new Socket("localhost", 20006);
        PrintWriter out = new PrintWriter(socket.getOutputStream());
        // 获取键盘输入
        System.out.println("请输入信息:");
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        out.println(str);
        out.flush();
        // 获取 Socket 的输入流,用来接收从服务端发送过来的数据
        BufferedReader buf = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String info = buf.readLine();
        System.out.println("Server:"+ info);
    }
}
0

要有消息返回,也需要客户端发送一条消息。有一个 onReceive 的方法用来监听接收到的消息。