クライアントを Socket.io サーバーに接続するサービスがあります。
var serviceSocketIo = angular.module('myApp.services', []);
serviceSocketIo.factory('mySocket',['$rootScope', '$routeParams', function ($rootScope, $routeParams) {
var base = $rootScope.base, //base = 'http://localhost:3000'
channel = '/' + $routeParams.game,
url = base + channel,
mySocket;
console.log('service: connection to ' + url);
mySocket = io.connect(url);
return {
base: base,
channel: channel,
socket: mySocket,
on: function (eventName, callback) {
mySocket.on(eventName, function () {
var args = arguments;
$rootScope.$apply(function () {
callback.apply(mySocket, args);
});
});
},
emit: function (eventName, data, callback) {
mySocket.emit(eventName, data, function () {
var args = arguments;
$rootScope.$apply(function () {
if (callback) {
callback.apply(mySocket, args);
}
});
})
}
};
}]);
名前空間は $routePrams パラメータに依存することに注意してください。
インスタンス化する前にキャッシュからサービスを削除する必要があります。したがって、サービスがクライアントを正しい URL に接続することを確認します。または、サービスにパラメーターを強制的にチェックさせる別の方法がある場合は?