UDP查询游戏html,基于UDP 的servlet 和 html EventSource 的消息推送

今天看了下EventSource的用法,发现还是有些坑容易让人掉进去,还不知道是怎么回事。

Code explained:

Set the "Content-Type" header to "text/event-stream"

Specify that the page should not cache

Output the data to send (Always start with "data: ")

Flush the output data back to the web page 另外,eventSource的源必须和和html在同一服务下

html端实现我就不写了,

w3cschool里面都有。

以下是Java端

public class UDPStreamServlet extends HttpServlet {

private static final Logger logger = LoggerFactory.getLogger(UDPStreamServlet.class);

//udp server

private static DatagramSocket serverSocket ;

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//最大接收的数据

byte[] receiveData = new byte[1024*512];

DatagramPacket receivePacket = null;

resp.setHeader("Content-Type", "text/event-stream;charset=UTF-8");

resp.setHeader("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate");

while(true) {

receiveData = new byte[1024*512];

receivePacket = new DatagramPacket(receiveData,

receiveData.length);

//接收数据

serverSocket.receive(receivePacket);

//data:必须写过去,不然显示不出来

resp.getWriter().print("data:");

//实际接收到的数据

resp.getWriter().println(new String(receivePacket.getData()).trim());

//得有一个空白行,不然出错

resp.getWriter().println();

resp.getWriter().flush();

}

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

doGet(req,resp);

}

@Override

public void destroy() {

if(serverSocket!=null){

//关闭udp服务端

serverSocket.close();

}

super.destroy();

}

@Override

public void init(ServletConfig config) throws ServletException {

String udpPort = config.getInitParameter("udpPort");

int port = Integer.valueOf(udpPort);

System.out.println("-->udpPort="+port);

try {

serverSocket = new DatagramSocket(port);

} catch (SocketException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值