RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 602747
Accepted
federk
federk
Asked:2020-12-13 01:49:07 +0000 UTC2020-12-13 01:49:07 +0000 UTC 2020-12-13 01:49:07 +0000 UTC

是否可以使用javascript通过第三方服务器的ip/端口读取套接字?

  • 772

现在在 php 的帮助下,我通过 ip:port(使用 fsockopen 函数)从不同的套接字接收数据。这样做是为了获取当前在不同电台播放的歌曲:

$open = fsockopen($radioip,$radioport,$errno,$errstr,'.5');
    if ($open) {
        fputs($open,"GET /7.html HTTP/1.1\nUser-Agent:Mozilla\n\n");
        stream_set_timeout($open,'1');
        $read = fread($open,255); }

结果,主页上的主要 javascript 定期访问服务器上的这个 php。我希望所有这些都可以在没有对服务器不必要的请求的情况下工作,而是通过浏览器本身。是否可以在 javascript 中实现类似的功能 - 将 ip 和端口传递给它并获得必要的数据?

javascript
  • 4 4 个回答
  • 10 Views

4 个回答

  • Voted
  1. Best Answer
    Ivan Davletshin
    2020-12-20T05:47:46Z2020-12-20T05:47:46Z

    不幸的是,只有当响应者在响应标头中具有 Access-Control-Allow-Origin 和您的来源时,您的“来源”之外的任何浏览器请求才有可能。出于安全原因,此案例已全部关闭。如果可以从任何站点使用 AJAX 调用另一个站点 - 很多不好的事情都可以通过这种方式完成。

    有关跨域 AJAX 的更多信息,例如此处

    在这种情况下,Websockets 根本帮不了你,因为。它是服务器和客户端之间的独立通信协议。而且最近浏览器越来越强制wss(encrypted web sockets),为此,除了支持Websockets之外,还需要在这个支持服务器上使用SSL。所以你尤其不能没有中间 php 脚本。

    如果你问这个问题是因为你的服务器负载很重,你应该考虑用类似 websockets 的东西来促进这整个事情。不是通过第三方服务器,而是通过您自己的服务器。例如,它将以一定的频率更新其在远程服务器上的缓存,并以一定的频率(或在发生变化时)向客户端发送信息。在 websockets 中,连接保持不变,客户端和服务器之间可以进行双向对话。因此,客户端不需要经常访问任何页面,但他们只会在发送消息时收到一条 websocket 消息。例如,这可以在 Node.js 或 ASP.net 中实现。在 PHP 中,我个人没有见过这样的东西。

    • 3
  2. natus vincer
    2020-12-13T02:07:41Z2020-12-13T02:07:41Z

    尝试 HTML5 Web 套接字。

    var socket = new WebSocket("ws://IPAddress:PORT");
    socket.onopen = function() {
      alert("Соединение установлено.");
    };
    
    socket.onclose = function(event) {
      if (event.wasClean) {
        alert('Соединение закрыто чисто');
      } else {
        alert('Обрыв соединения'); // например, "убит" процесс сервера
      }
      alert('Код: ' + event.code + ' причина: ' + event.reason);
    };
    
    socket.onmessage = function(event) {
      alert("Получены данные " + event.data);
    };
    
    socket.onerror = function(error) {
      alert("Ошибка " + error.message);
    };
    
    • 1
  3. Денис Епишкин
    2020-12-17T04:23:59Z2020-12-17T04:23:59Z

    1006 CLOSE_ABNORMAL 保留。当需要状态代码时,用于指示连接异常关闭(即没有发送关闭帧)。

    https://developer.mozilla.org/en/docs/Web/API/CloseEvent

    来自关于 CloseEvent 的 Mozil 参考书 但我假设另一侧根本没有 websocket 服务器,如果是这样,那么从页面(从浏览器读取)您将不会以任何方式从该套接字接收数据流。

    • 1
  4. sanmai
    2020-12-17T14:26:00Z2020-12-17T14:26:00Z

    为了让您通过 WebSocket 连接到该服务器,该服务器必须支持WebSocket 协议,它与 HTTP 略有不同。

    所有流行的服务器都有支持此协议的模块。

    如果您不控制远程服务器,那么仍然建议您缓存数据:例如,如果您知道现在正在播放t具有持续时间的组合的某某秒s,那么下次您需要联系该服务器时仅在s-t几秒钟后。

    除了 WebSocket 技术和浏览器中明显的漏洞之外,您无法仅使用 JS 连接到任意 IP 上的任意端口来接收数据。想象一下,如果那是可能的!

    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何停止编写糟糕的代码?

    • 3 个回答
  • Marko Smith

    onCreateView 方法重构

    • 1 个回答
  • Marko Smith

    通用还是非通用

    • 2 个回答
  • Marko Smith

    如何访问 jQuery 中的列

    • 1 个回答
  • Marko Smith

    *.tga 文件的组重命名(3620 个)

    • 1 个回答
  • Marko Smith

    内存分配列表C#

    • 1 个回答
  • Marko Smith

    常规赛适度贪婪

    • 1 个回答
  • Marko Smith

    如何制作自己的自动完成/自动更正?

    • 1 个回答
  • Marko Smith

    选择斐波那契数列

    • 2 个回答
  • Marko Smith

    所有 API 版本中的通用权限代码

    • 2 个回答
  • Martin Hope
    jfs *(星号)和 ** 双星号在 Python 中是什么意思? 2020-11-23 05:07:40 +0000 UTC
  • Martin Hope
    hwak 哪个孩子调用了父母的静态方法?还是不可能完成的任务? 2020-11-18 16:30:55 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    Arch ArrayList 与 LinkedList 的区别? 2020-09-20 02:42:49 +0000 UTC
  • Martin Hope
    iluxa1810 哪个更正确使用:if () 或 try-catch? 2020-08-23 18:56:13 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5