Socket.io只发送给当前用户
我在一个基本的应用程序中testingSocket.io,但io.sockets.emit
似乎没有按预期工作。 以下是我的相关服务器端代码,Angular socket服务和控制器。 当我运行这个代码时,只有当前连接看到console.log语句。 基于io.sockets.emit
我会期待相反的(每一个其他用户看到连接另一个用户时logging的消息)。
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'); });