项目的小结
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
原文地址:https://blog.csdn.net/2301_80311013/article/details/140701597
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!