【问题标题】:Java - how sockets how can I receive data without constantly pingingJava - 套接字如何在不不断 ping 的情况下接收数据
【发布时间】:2017-09-11 03:19:16
【问题描述】:

好的,所以我有一个 apache 服务器,其中包含我想要发送到 Java 客户端的文本/数据。问题是数据会经常变化,我不希望客户端不断地在服务器上进行读取,因为显然我不想要不断的 ping。我知道我可以创建一个客户端套接字,但这需要我的用户进行端口转发以访问服务器,这对我的用户不起作用。

我在网上找到的是 UDP 穿孔或 NAT 传输可能有效,但我找不到任何关于如何在 Java 中执行此操作的示例。

  • 如果您有任何问题,请随时发表评论:)

【问题讨论】:

  • 你不能使用服务器发送的事件或 websockets 吗?
  • 我没有找到任何可以让服务器随机响应客户端的东西。因为它是一个 apache 网络服务器,我不认为你可以做事件。?

标签: java php sockets tcp udp


【解决方案1】:

你可以Recieve Server-Sent Event notifications,服务器发送数据,以PHP和JS为例:

var source = new EventSource("demo_sse.php");
source.onmessage = function(event) {
    document.getElementById("result").innerHTML += event.data + "<br>";
};

PHP:

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

$time = date('r');
echo "data: The server time is: {$time}\n\n";
flush();
?>

【讨论】:

  • 谢谢,你知道我怎么也可以用Java做onmessage吗?
  • 您发送的内容在 java 中运行良好,但假设我想要一个服务器,有没有办法在 Java 中将服务器事件作为客户端获取?
  • 我不明白你想要达到什么目的。请详细说明。
  • 所以我检查了一段时间的java servlet并使用了doGet,但它似乎不允许我接收服务器发送的事件。所以换句话说,我怎么能做你在 java 中使用 javascript 所做的事情?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-06
  • 2017-12-28
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
相关资源
最近更新 更多