我有一个socket.io服务器设置了node.js,一个客户端管理器设置在angular应用程序中。我正在使用socket.io-client库进行连接。我用angular-socket-io将它传递给控制器:
app.factory('mySocket', function (socketFactory) {
return socketFactory();
});
app.factory('socket', ['mySocket', '$rootScope', socket]);
app.controller('MainController', ['$scope', 'socket', MainController]);
我的服务器:
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
});
io.on('connection', function(socket) {
socket.emit('welcome', { message: 'Welcome!', id: socket.id });
socket.on('i am client', console.log);
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
基本的客户服务:
var socket = io.connect("http://localhost:3000");
console.log(socket);
// Add a connect listener
socket.on('connect',function() {
console.log('Client has connected to the server!');
socket.emit('i am client', "hi!");
socket.on('welcome', console.log);
});
我无法连接它们(两个独立的项目在不同的端口上运行),直到我强迫uri在socket.io.js文件中http://localhost:3000 ...
所以我的问题是:如何在选项中设置我的uri或主机和端口,以便获得正确的uri?只是说,像
这样的经典io.connect("http://localhost:3000");
根本不起作用。
编辑:想出来。在主要的js文件中,启动了socketFactory(),它必须是这样的:app.factory('mySocket', function (socketFactory) {
var myIoSocket = io.connect('http://localhost:3000');
return socketFactory({ ioSocket: myIoSocket });
});