【发布时间】:2021-04-05 12:27:04
【问题描述】:
尝试使用 Angular js + socket.io 连接到服务器(Node.js - nestsJS)
我有 React 和 Angular 应用程序 在反应应用程序中一切正常
在 Angularjs 中,我总是得到“ping 超时”,然后它尝试重新连接 - 在服务器上我看到了连接并且它通过了身份验证流程。
当我进入网络选项卡(WS)时,我在后端进行了身份验证后得到了我的事件,所以它看起来像是一个客户端问题 所以每隔约 30 秒控制台输出断开连接 + 原因“ping 超时”
Angular 代码-socket 服务
.factory('socket', socket);
socket.$inject = ["$rootScope"];
function socket($rootScope) {
const options = {
transports:['websocket'],
// allowUpgrades: false,
query: {
token : "token",
},
forceNew: true
}
var socket = io.connect('/', { ...options, path: `/socket.io` });
return {
on: function(eventName, callback) {
socket.on(eventName, function() {
var args = arguments;
$rootScope.$apply(function() {
callback.apply(socket, args);
});
});
},
emit: function(eventName, data, callback) {
socket.emit(eventName, data, function() {
var args = arguments;
$rootScope.$apply(function() {
if (callback) {
callback.apply(socket, args);
}
});
})
}
};
控制器:
socket.on('connect', function (data) {
console.log("connect")
});
socket.on('connection', function (data) {
console.log("connect")
});
socket.on('disconnect', function (data) {
console.log("disconnect")
console.log(data)
});
socket.on('events-test', function (data) {
console.log("test")
console.log(data)
})
在网络选项卡中,我可以看到“events-test”事件,它将创建一个新的“ws”选项卡 evrey 重新连接
【问题讨论】:
-
你在客户端和/或nodeJs服务器上使用什么版本的socket.io?
-
@MisterniceGuy 嗨,感谢服务器->(使用基于 socket.io 的@nestjs/platform-socket.io 6.11.11": "2.3.0")客户端- Socket.IO v4.0.0
-
我也尝试了 3.1.3 版本的客户端得到相同的 ping 超时