马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1.实现实时聊天
1.服务端创建一个ConcurrentHashMap<> 用来存储在线用户,用户账号和socket然后,如果有个人发了信息,就去数据库中查询,然后根据这个在线用户举行传递信息
服务端框架:
- public class ServerMain {
- private static ConcurrentHashMap<Integer, Socket> onlineUsers = new ConcurrentHashMap<>();
- public static void main(String[] args) throws Exception {
- ServerSocket serverSocket = new ServerSocket(8888);
- //返回一个最多5个线程的线程池
- ExecutorService es = Executors.newFixedThreadPool(5);
- while (true) {
- Socket socket = serverSocket.accept();
- es.submit(new myRunnable(socket,onlineUsers));
- }
- }
- }
复制代码- public class myRunnable implements Runnable {
- private Socket socket;
- private VerificationCodeTool verificationCodeTool = new VerificationCodeTool();
- //记录在线用户,不断更新界面
- private ConcurrentHashMap<Integer, Socket> onlineUsers;
- Student student;
- Teacher teacher;
- int UserId; //用来删除
- public myRunnable(Socket socket,ConcurrentHashMap onlineUsers) {
- this.socket = socket;
- this.onlineUsers = onlineUsers;
- }
- @Override
- public void run() {
- long lastTime = 0;
- while (!socket.isClosed()) {
- try {
- Message requestMessage = SocketUtil.getSocketUtil().getMessage(socket);
- if (requestMessage == null) {
- System.out.println("message 为空");
- break;
- }
- //后面进行请求操作
-
复制代码 2. 客户端搞长毗连,另有主控制类,在主控制类中调用方法,实时更新ui,
客户端根据哀求举行处理:
专门搞个线程,举行长毗连,处理服务端发过来的哀求。
服务端处理哀求线程:
3。根据哀求类型更新ui,因为这是第二个线程,所以更新ui要举行调用javafx安全线程。举行更新ui
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |