一、消息提醒的难点
1、当用户提醒设置数据量庞大时的处理
2、提醒消息的实时性
3、提醒功能的实现
二、消息中心的设计与搭建
方案一:Socket(BIO)
#服务端
public class BioServer {
public static void main(String[] args) throws IOException {
//创建socket服务端
ServerSocket serverSocket = new ServerSocket(8080);
//等待客户端的连接,返回的socket对象就是和客户端的连接对象
Socket socket = serverSocket.accept();//阻塞的方法,如果没有客户端连接,程序不会往下执行
System.out.println("有客户端连接了服务器!!!");
new Thread(){
@Override
public void run() {
while(true) {
try {
//服务器给客户端回复消息
System.out.println("请输入需要发送的内容:");
Scanner scanner = new Scanner(System.in);
String result = scanner.next();
byte[] bytes = result.getBytes("utf-8");
OutputStream out = socket.getOutputStream();
out.write(bytes);
out.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}.start();
while(true){
//获取客户端的数据
InputStream in = socket.getInputStream();
//从客户端中读取数据,放入10kb的字节数组中
byte[] buffer = new byte[1024 * 10];
int len = in.read(buffer);//该方法是一个阻塞方法,如果客户端没有给服务器发消息,这服务器会阻塞在这行代码上
//打印byte数组
String content = new String(buffer, 0, len, "utf-8");
System.out.println(