首页 > 解决方案 > Node JS - Socket.io-client 不能正常工作

问题描述

通过在浏览器中运行,此代码可以完美运行。但是我试图让它在 Node JS 上运行但没有成功。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>

<body>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js"></script>
  <script>
    var url = 'wss://*********.com/';
    var socket = io(url, {
      transport: ['websocket']
    });

    console.log('iniciado');

    socket.on('connect', function() {
      console.log('connected');
      socket.emit('checkout-load', {
        shopperSessionCode: "0971852c97c964e6c01ccfa7c1b131c01550675960125",
        checkoutMode: "10",
        locale: "pt_BR",
        timezone: "America/Sao_Paulo",
        cookie: "",
        forceShowBillet: 0,
        forceHideBillet: 0,
        forceHidePayPal: 0,
        forceHideTransfer: 0,
        forceHideTrial: 0,
        forceHideMultipleCards: 0,
        forceHideSamsungPay: 0,
        defaultInstallmentOption: 0,
        thumb: 0,
        checkoutCustomId: null,
        templateLayoutId: null,
        hotAffiliateCookiesInfo: {
          urlDomain: ".*****.com",
          hotAffiliateCookieVO: [{
            name: "hotd",
            value: "",
            domain: ".hotmart.com"
          }]
        },
        urlCheckout: "https://*******",
        previousUrl: "https://********",
        callbackEvent: "checkoutLoaded",
        affiliationReference: [{
          amount: 1,
          affiliationReference: "******"
        }]
      });
    });
    socket.on('checkoutLoaded', function(data) {
      console.log('evento recebido');
      console.log(data);
    });
    socket.on('disconnect', function() {
      console.log('disconnect');
    });
    socket.on('ping', function() {
      console.log('ping');
    });
    socket.on('pong', function() {
      console.log('pong');
    });

    console.log('finalizado');
  </script>
</body>

</html>

该代码连接到 websocket,但是在连接后未正确发送 socket.emit ('...') 命令。还使用 socket.send() 进行了测试,也不起作用。

节点JS代码:

var socket = require('socket.io-client')('wss://*******/',{transports: ['websocket']});

console.log('iniciado');

socket.on('connect', function(data){
    console.log('connected');

    socket.emit('checkout-load', {
        shopperSessionCode:"0971852c97c964e6c01ccfa7c1b131c01550675960125",
        checkoutMode:"10",
        locale:"pt_BR",
        timezone:"America/Sao_Paulo",
        cookie:'',
        forceShowBillet:0,
        forceHideBillet:0,
        forceHidePayPal:0,
        forceHideTransfer:0,
        forceHideTrial:0,
        forceHideMultipleCards:0,
        forceHideSamsungPay:0,
        defaultInstallmentOption:0,
        thumb:0,
        checkoutCustomId:null,
        templateLayoutId:null,
        hotAffiliateCookiesInfo:{
            urlDomain:".hotmart.com",
            hotAffiliateCookieVO:[
                {
                    name:"hotd",
                    value:"******",
                    domain:".hotmart.com"
                }
            ]
        },
        urlCheckout:"https://********",
        previousUrl:"https://************",
        callbackEvent:"checkoutLoaded",
        affiliationReference:[
            {
                amount:1,
                affiliationReference:"*****"
            }
        ]
    });
});

socket.on("checkoutLoaded", function(data){
    console.log('evento recebido: checkoutLoaded');
    console.log(data);
});

有人能帮我吗?

标签: javascriptnode.jssocket.io

解决方案


请查看socket.io文档。明确提到它不是websocket实现。

https://socket.io/docs/#What-Socket-IO-is-not


推荐阅读