Javascript Socket.io仅向当前用户发送
我正在一个基本应用程序中测试Socket.io,但是Javascript Socket.io仅向当前用户发送,javascript,angularjs,node.js,sockets,socket.io,Javascript,Angularjs,Node.js,Sockets,Socket.io,我正在一个基本应用程序中测试Socket.io,但是io.sockets.emit似乎没有按预期工作。下面是我的相关服务器端代码、Angular socket服务和控制器。当我运行此代码时,只有当前连接可以看到console.log语句。基于io.sockets.emit我本可以预料到相反的情况(每个其他用户在连接另一个用户时都会看到登录的消息) server.js: var express = require('express'); var app = ex
io.sockets.emit
似乎没有按预期工作。下面是我的相关服务器端代码、Angular socket服务和控制器。当我运行此代码时,只有当前连接可以看到console.log语句。基于io.sockets.emit
我本可以预料到相反的情况(每个其他用户在连接另一个用户时都会看到登录的消息)
server.js:
var express = require('express');
var app = express();
var port = process.env.PORT || 8000;
var io = require('socket.io').listen(app.listen(port));
io.on('connection', function(socket){
io.sockets.emit('connect', {data: 'hey there!'});
});
console.log('Connected on port ' + port);
exports = module.exports = app;
socket.service.js:
angular
.module('app')
.factory('socketService', function ($rootScope) {
var socket = io.connect();
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);
}
});
})
}
};
});
main.controller.js:
angular
.module('app')
.controller('MainController', MainController);
MainController.$inject = ['socketService'];
function MainController(socketService) {
var vm = this;
socketService.on('connect', function(data) {
console.log('connection identified');
});
}
问题在于,
connect
是一个socket.io事件,在成功连接时会被触发
相反,请尝试在服务器上使用此选项
io.sockets.emit('connect message', {data: 'hey there!'});
这是关于客户的
socketService.on('connect message', function(data) {
console.log('connection identified');
});
谢谢使用特定的活动标题是值得的,这样你就不会与“保留”词相冲突。我应该意识到“连接”已经被用于某些事情了。