我正在開發一個使用AngularJS,Nodejs和Socket.io服務器和客戶端庫的實時socket.io應用程序。我使用稱爲angular-socket-io的模塊,但是當我告訴Angular連接時,我刷新頁面越多,似乎多個連接一直保持與Socket.IO一致,並且我現在是頁面上唯一的用戶。Socket.IO和AngularJS創建多個連接,如何停止?
在我的服務器日誌中,我不斷看到許多套接字ID打印出來,當我刷新應用程序頁面時,它需要一段時間才能重新連接。看着控制檯我看到它與服務器進行了很多通信(可能與多個套接字連接握手有關),但在一兩分鐘之後,它終於穩定下來並開始再次接收數據。
我想我做錯了,或者這是正常的?有沒有人有任何關於在角度使用Socket.IO的好建議,以便在頁面刷新時重新連接一次並擺脫所有以前的連接,以便始終保持唯一一個連接?
以下是一些代碼示例。爲了澄清,btford.socket-io將所有轉發的套接字事件與「套接字:」前綴相加。所以在我的例子中它將是「socket:start」。
myApp.js
angular.module('myApp', [ 'btford.socket-io', 'myControllers' ])
.config([ 'socketProvider', function(socketProvider) {
var appSocket = io.connect('http://live.myapp.com');
socketProvider.ioSocket(appSocket);
}])
.run(['socket', function(socket) {
socket.forward('error');
socket.forward('start'); // this is the event i'm trying to listen for
});
myController的
angular.module('myControllers').controller('startController', [
'$scope',
function($scope) {
$scope.$on('socket:start', function(ev, data) {
$scope.activeDrivers.push({
name: data.user.firstName + " " + data.user.lastName
});
$scope.driversActiveTab.count = $scope.activeDrivers.length;
});
}
]);
原來是這樣,我想不通爲什麼它一直與服務器建立這麼多連接!我在這裏先向您的幫助表示感謝!
我也面臨類似的問題,這是「https://stackoverflow.com/questions/46242518/node-js-socket-io-capture-and-stop-connection」。請幫忙。 – sand