Socket.io - angular.js。 - 总是与 "ping timeout" 断开连接
Socket.io - angular.js. - always disconnected with "ping timeout"
正在尝试使用 Angular js + socket.io 连接到服务器(Node.js - nestsJS)
我有 React 和 Angular 应用程序
在 React 应用程序中,一切正常
在 Angularjs 中我总是“ping 超时”,然后它尝试重新连接 - 在服务器上我看到了连接并且它通过了身份验证流程。
当我转到网络选项卡 (WS) 时,我在后端经过身份验证后收到了我的事件,所以它看起来像是客户端问题
所以每 ~30 秒控制台输出断开连接 + 原因“ping 超时”
Angular 代码-套接字服务
.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”选项卡
通过将 socket-io 客户端版本更改为 2.3.0 解决
在客户端使用 socketio 版本 2 来匹配服务器。 3 和 4 与服务器 v2
不兼容
正在尝试使用 Angular js + socket.io 连接到服务器(Node.js - nestsJS)
我有 React 和 Angular 应用程序 在 React 应用程序中,一切正常
在 Angularjs 中我总是“ping 超时”,然后它尝试重新连接 - 在服务器上我看到了连接并且它通过了身份验证流程。
当我转到网络选项卡 (WS) 时,我在后端经过身份验证后收到了我的事件,所以它看起来像是客户端问题 所以每 ~30 秒控制台输出断开连接 + 原因“ping 超时”
Angular 代码-套接字服务
.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”选项卡
通过将 socket-io 客户端版本更改为 2.3.0 解决 在客户端使用 socketio 版本 2 来匹配服务器。 3 和 4 与服务器 v2
不兼容