【问题标题】:Creating a socket to a website to retrieve that pages information创建到网站的套接字以检索该页面信息
【发布时间】:2015-12-27 09:04:45
【问题描述】:

如何创建一个到站点的套接字以检索该页面信息?如果我使用流星,我是否必须循环执行 HTTP.get(这是一个多人游戏,所以事情会不断变化),或者有没有办法实际创建一个到站点的套接字。我查看了 Socket.io,但我只能找到如何监听和接受,而不是真正为站点创建套接字。

编辑:在我的情况下 http://play.pokemonshowdown.com/ 。我假设如果我继续执行 http.get 请求,它将不会保存状态并因此继续创建新游戏。我能否以某种方式在我的站点/服务器与他们的站点/服务器之间创建一个套接字,直到我断开连接?基本上,无论浏览器做什么,但我不想显示该信息,而是将其重定向到另一个套接字(不是问题的一部分)。

【问题讨论】:

    标签: node.js sockets http meteor socket.io


    【解决方案1】:

    这里的答案取决于您要连接的站点支持什么。如果它只是一个创建网页的 Web 服务器,那么您唯一的选择是使用 HTTP get 操作来请求网页。

    如果站点支持特定 API,您可以对特定 API 请求进行 HTTP get 操作,并获得比网页更结构化的响应。

    如果站点支持定义了特定请求/响应消息的 webSocket 或 socket.io 连接,那么您可以使用 webSocket 或 socket.io 进行连接。

    但是,这完全取决于接收站点支持的内容。


    如果您尝试从 node.js 执行重复请求,您可能不会使用循环,而更像是一个计时器,例如:

    setInterval(function() {
        request.get(..., function(err, response, body) {
            // process error or response here
        });
    }, 10* 1000);
    

    request 模块也可能对您有用,因为它在尝试从 HTTP 服务器检索请求时在 http 模块之上添加了许多功能。

    【讨论】:

    • 我明白了,如果它是一个游戏网站,而是一个多人游戏呢?在我的情况下 play.pokemonshowdown.com 。我假设如果我继续执行 http.get 请求,它将不会保存状态并因此继续创建新游戏。我能否以某种方式在我的站点/服务器与他们的站点/服务器之间创建一个套接字,直到我断开连接?基本上,无论浏览器做什么,但我不想显示该信息,而是将其重定向到另一个套接字(不是问题的一部分)。我会编辑我的问题。
    • @user99393939 - 您将不得不发现您有兴趣入侵的实际游戏网站实际上是如何工作的,因为有几种不同的可能性。我已经在我的回答中描述了这三个选项。您需要弄清楚特定站点使用和支持哪些。浏览器使用我在回答中概述的相同选项。通常,人们会使用代码检查和调试工具来检查浏览器游戏在做什么,以了解它是如何做的,从而确定网站服务器支持什么。这称为逆向工程。
    猜你喜欢
    • 2018-07-15
    • 1970-01-01
    • 2012-05-20
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多