这个servlet应该在评论中发布的广告中工作(没有测试过):
发送带有URL参数的消息和消息
接收一个消息与get(接收方id).返回消息,如果没有消息,则返回消息.应该使用浏览器进行测试.
在现实世界中,获取请求不应该真正改变服务器的状态.我只会运行这个课程的时间,因为任何人都可以发送任何id,任何人都可以读取任何id的东西.
public class SimpleMessageServlet extends HttpServlet {
private Map messages = new HashMap();
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
String to = request.getParameter("to");
String message = request.getParameter("message");
if (to != null && from != null && message != null) {
messages.put(to,message);
}
response.setContentType("text/plain");
String get = request.getParameter("get");
if (get != null) {
String result = messages.remove(get);
if (result != null) {
PrintWriter out = response.getWriter();
out.println(result);
}
}
}
编辑:简化为每个地址只存储一个消息,对于基于回合的游戏应该是足够的,缓冲只会增加客户端逻辑的复杂性(清除以前的匹配中的过时的转换数据等).可能有意义的是,以某种方式同步客户端,例如在发送转发之前发送“开始”信号,并在收到“开始”之前丢弃任何信息.令人遗憾的是,这将需要轮询,使用对等套接字将会更好.