javascript - 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);
});
有人能帮我吗?
解决方案
请查看socket.io文档。明确提到它不是websocket实现。
推荐阅读
- mysql - MySQL OR 优先
- sql - 在 SQL 上如何找到购买了一种产品到多种产品的客户
- assembly - 方括号后面的变量是什么意思?
- uitableview - SwiftUI:自定义表格视图单元格,内容与中心对齐
- flutter - Flutter:Google 登录无法正常工作,如何使其在发布模式下工作?
- javascript - 即使在 useEffect 内部也未定义文档字段值
- math - Angular Leaflet中的圆度循环
- android - 如何在android中的键盘顶部保持视图
- javascript - shopify不能上传视频
- html - 不同浏览器上的不同占位符