Java 聊天应用程序在客户端弹出一个窗口
我做了一个简单的聊天应用。它使用数据库,这是不高效的,因为客户端每隔几秒钟查询一次数据库。不管怎样,我实现了我所需要的,有一些很好的方法,比如轮询和commet,我将在以后实现它们。请花点时间读一读这篇文章,我对此没有什么问题。 1考虑两个用户100和101,当100发送一个MSG到101时,我将ID保存为数据库中的100*101。 2当101向100发回消息时,它将被保存为101_100,单位为DB。 我能把信息整理好 问题- 1用户应保持特定窗口打开 我想弹出打开时,有新的消息。如何做到这一点 2当用户100正在键入时,如果101聊天窗口仅打开,则用户101应看到100正在键入的文本。这不应该涉及任何数据库内容 我所做的工作。当user100开始向服务器键入时,我可以向服务器发送数据。如何发送数据,即如何将数据推送到user101 我的密码在下面 阿贾克斯 ServletJava 聊天应用程序在客户端弹出一个窗口,java,ajax,jquery,cometd,Java,Ajax,Jquery,Cometd,我做了一个简单的聊天应用。它使用数据库,这是不高效的,因为客户端每隔几秒钟查询一次数据库。不管怎样,我实现了我所需要的,有一些很好的方法,比如轮询和commet,我将在以后实现它们。请花点时间读一读这篇文章,我对此没有什么问题。 1考虑两个用户100和101,当100发送一个MSG到101时,我将ID保存为数据库中的100*101。 2当101向100发回消息时,它将被保存为101_100,单位为DB。 我能把信息整理好 问题- 1用户应保持特定窗口打开 我想弹出打开时,有新的消息。如何做到这一
try {
String newline = System.getProperty("line.separator");
String uName = req.getParameter("uName");
String opName= req.getParameter("opName");
String msg = req.getParameter("msg");
String colorCode = req.getParameter("colorCode");
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
String dat =dateFormat.format(date);
PreparedStatement ps = db.conn.prepareStatement("INSERT INTO chatmessage"
+ "(message,username,msgtime,colorselected) "
+ " VALUES(?,?,?,?)");
ps.setString(1,msg);
ps.setString(2,uName+"_"+opName);
ps.setString(3,dat);
ps.setString(4,colorCode);
ps.executeUpdate();
ps.close();
ps = db.conn.prepareStatement("select * from chatmessage where username=? or username=? order by id asc");
ps.setString(1,uName+"_"+opName);
ps.setString(2,opName+"_"+uName);
ResultSet rs=ps.executeQuery();
String temp[];
StringBuilder sb = new StringBuilder();
while(rs.next())
{
temp=rs.getString("username").split("_");
/* out.println(newline);
out.print(temp[0]+":");
out.print(rs.getString("message"));
out.println(newline);*/
sb.append("<span style='background:#"
+ rs.getString("colorselected") + "'>" + temp[0]
+ "</span>" + rs.getString("message") + "<br/><br/>");
}
db.conn.close();
out.print(replaceEmoticons(sb.toString()));
//out.print("success");
}
catch(Exception ce){
out.println("<font size='30' color='red'>Error Code 004</font>");
// RequestDispatcher rd = req.getRequestDispatcher("../status/error.jsp");
// rd.forward(req, res);
}finally{
try{
db.conn.close();
}catch(Exception e){}
}
谢谢,任何简单有效的想法都会受到赞赏。这似乎是一个web应用程序?
try {
String newline = System.getProperty("line.separator");
String uName = req.getParameter("uName");
String opName= req.getParameter("opName");
String msg = req.getParameter("msg");
String colorCode = req.getParameter("colorCode");
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
String dat =dateFormat.format(date);
PreparedStatement ps = db.conn.prepareStatement("INSERT INTO chatmessage"
+ "(message,username,msgtime,colorselected) "
+ " VALUES(?,?,?,?)");
ps.setString(1,msg);
ps.setString(2,uName+"_"+opName);
ps.setString(3,dat);
ps.setString(4,colorCode);
ps.executeUpdate();
ps.close();
ps = db.conn.prepareStatement("select * from chatmessage where username=? or username=? order by id asc");
ps.setString(1,uName+"_"+opName);
ps.setString(2,opName+"_"+uName);
ResultSet rs=ps.executeQuery();
String temp[];
StringBuilder sb = new StringBuilder();
while(rs.next())
{
temp=rs.getString("username").split("_");
/* out.println(newline);
out.print(temp[0]+":");
out.print(rs.getString("message"));
out.println(newline);*/
sb.append("<span style='background:#"
+ rs.getString("colorselected") + "'>" + temp[0]
+ "</span>" + rs.getString("message") + "<br/><br/>");
}
db.conn.close();
out.print(replaceEmoticons(sb.toString()));
//out.print("success");
}
catch(Exception ce){
out.println("<font size='30' color='red'>Error Code 004</font>");
// RequestDispatcher rd = req.getRequestDispatcher("../status/error.jsp");
// rd.forward(req, res);
}finally{
try{
db.conn.close();
}catch(Exception e){}
}