我无法连接到站点套接字

问题描述 投票:0回答:1

我一直在尝试这样做,但是您可以将其socket.io服务器连接到另一个网站吗?我一直在尝试从使用socket.io进行实时更新的网站上抓取数据。如果可能的话,将非常方便。

我正在尝试从网站https://www.ethercrash.io/中获取实时更新-但是,我尝试了以下代码,除了连接之外没有任何其他更新;

var io = require('socket.io-client');
var socket = io('https://www.ethercrash.io')

socket.on('connect', function(){
  console.log(true);
});

socket.on('msg', function(data) {
  console.log('chat message');
});

socket.on('disconnect', function(){
  console.log(false);
});

我做错什么了吗?或者这是不可能的吗?

node.js web-scraping socket.io
1个回答
0
投票

我在所有的node.js / express / socket.io项目中都使用以下内容。希望它可以帮助您。

<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
        <script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js"></script>

        <script>
        $(document).ready(function() {

            // NOTE, I AM FORCING WEBSOCKET TRANSPORT HERE.  AND AM NOT ALLOWING 
            // SOCKET.IO TO FALL BACK TO LONG POLLING FALLBACK, 
            // SO YOU CAN REMOVE THE TRANSPORTS AND GO WITH SOCKET.IO DEFAULTS
            // PORT I'M USING IS 3000 -- SO THE PORT CAN BE IMPORTANT, DEPENDING ON YOUR USASGE 

            var socket = io.connect("https://MY-SERVER-NAME-HERE.eastus.cloudapp.azure.com:3000", {
              secure: true,
              transports: ["websocket"],
              path: "/socket/socket.io"
            });

            // EVERY TIME THE NODE.JS SERVER SENDS US 'MESSAGE' WE'LL DISPLAY THAT UPDATED NUMBER IN A DIV
            socket.on("message", function(msg) {
                document.getElementById("message").innerHTML = msg;
            });
    });
    </script>
    </head>

        <body style="width: 100%;">
          <div id="message" style="text-align: center; width: 100%; font-size: 2em;"></div>
        </body>
</html>

您还依赖于该“其他站点”(运行套接字服务器)向所有已连接的客户端或您的连接发出信号。除非发生任何一种情况,否则您将只有一个连接,并且不会发出任何消息(将被读取/解析)。

与套接字一起使用真的很有趣,并且一旦掌握了它,它就充满了潜力!

© www.soinside.com 2019 - 2024. All rights reserved.