Node.js 如何使用socket.io将数据发送到指定的客户端?有棱角的、点头的、快速的
我正在用NodeJS、Express和Angular编写一个社交网站 现在我已经处理了服务器和客户端之间的套接字,但我想只向用户的朋友发送服务器端状态,而不是向整个网络广播 这是我的代码: 在客户端中 Main.jsNode.js 如何使用socket.io将数据发送到指定的客户端?有棱角的、点头的、快速的,node.js,sockets,angularjs,express,social-networking,Node.js,Sockets,Angularjs,Express,Social Networking,我正在用NodeJS、Express和Angular编写一个社交网站 现在我已经处理了服务器和客户端之间的套接字,但我想只向用户的朋友发送服务器端状态,而不是向整个网络广播 这是我的代码: 在客户端中 Main.js angular.module('appServices', ['ngResource']). factory('socket', function($rootScope){ var socket = io.connect(); return { on
angular.module('appServices', ['ngResource']).
factory('socket', 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 agrs = arguments;
$rootScope.$apply(function (){
if(callback){
callback.apply(socket, agrs);
}
});
})
}
};
});
function activityCtrl($scope, socket){
$scope.createStatus = function(){
var sttData = $scope.stt;
socket.emit('createStt',sttData);
}
socket.on('addStt',function(data){
$scope.user.activity.unshift(data);
});
socket.on('myStt',function(data){
$scope.user.activity.unshift(data);
});
angular.module('webProfileApp',['appServices'])// appServices duoc goi tu services.js
.config(['$routeProvider', function($routeProvider){
$routeProvider.
when('/activity/:userId',{ templateUrl: 'partials/me.html', controller: activityCtrl });
}]);
var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);
io.sockets.on('connection',user.createStt);
exports.createStt = function(socket){
socket.on('createStt',function(dataSocket){
console.log('Save status---------');
var reqBody = dataSocket;
//
//Save data
//
socket.broadcast.emit('addStt',reqBody);
socket.emit('myStt',reqBody);
});
});
Controller.js
angular.module('appServices', ['ngResource']).
factory('socket', 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 agrs = arguments;
$rootScope.$apply(function (){
if(callback){
callback.apply(socket, agrs);
}
});
})
}
};
});
function activityCtrl($scope, socket){
$scope.createStatus = function(){
var sttData = $scope.stt;
socket.emit('createStt',sttData);
}
socket.on('addStt',function(data){
$scope.user.activity.unshift(data);
});
socket.on('myStt',function(data){
$scope.user.activity.unshift(data);
});
angular.module('webProfileApp',['appServices'])// appServices duoc goi tu services.js
.config(['$routeProvider', function($routeProvider){
$routeProvider.
when('/activity/:userId',{ templateUrl: 'partials/me.html', controller: activityCtrl });
}]);
var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);
io.sockets.on('connection',user.createStt);
exports.createStt = function(socket){
socket.on('createStt',function(dataSocket){
console.log('Save status---------');
var reqBody = dataSocket;
//
//Save data
//
socket.broadcast.emit('addStt',reqBody);
socket.emit('myStt',reqBody);
});
});
}
Main.js
angular.module('appServices', ['ngResource']).
factory('socket', 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 agrs = arguments;
$rootScope.$apply(function (){
if(callback){
callback.apply(socket, agrs);
}
});
})
}
};
});
function activityCtrl($scope, socket){
$scope.createStatus = function(){
var sttData = $scope.stt;
socket.emit('createStt',sttData);
}
socket.on('addStt',function(data){
$scope.user.activity.unshift(data);
});
socket.on('myStt',function(data){
$scope.user.activity.unshift(data);
});
angular.module('webProfileApp',['appServices'])// appServices duoc goi tu services.js
.config(['$routeProvider', function($routeProvider){
$routeProvider.
when('/activity/:userId',{ templateUrl: 'partials/me.html', controller: activityCtrl });
}]);
var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);
io.sockets.on('connection',user.createStt);
exports.createStt = function(socket){
socket.on('createStt',function(dataSocket){
console.log('Save status---------');
var reqBody = dataSocket;
//
//Save data
//
socket.broadcast.emit('addStt',reqBody);
socket.emit('myStt',reqBody);
});
});
在服务器端:
app.js
angular.module('appServices', ['ngResource']).
factory('socket', 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 agrs = arguments;
$rootScope.$apply(function (){
if(callback){
callback.apply(socket, agrs);
}
});
})
}
};
});
function activityCtrl($scope, socket){
$scope.createStatus = function(){
var sttData = $scope.stt;
socket.emit('createStt',sttData);
}
socket.on('addStt',function(data){
$scope.user.activity.unshift(data);
});
socket.on('myStt',function(data){
$scope.user.activity.unshift(data);
});
angular.module('webProfileApp',['appServices'])// appServices duoc goi tu services.js
.config(['$routeProvider', function($routeProvider){
$routeProvider.
when('/activity/:userId',{ templateUrl: 'partials/me.html', controller: activityCtrl });
}]);
var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);
io.sockets.on('connection',user.createStt);
exports.createStt = function(socket){
socket.on('createStt',function(dataSocket){
console.log('Save status---------');
var reqBody = dataSocket;
//
//Save data
//
socket.broadcast.emit('addStt',reqBody);
socket.emit('myStt',reqBody);
});
});
User.js
angular.module('appServices', ['ngResource']).
factory('socket', 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 agrs = arguments;
$rootScope.$apply(function (){
if(callback){
callback.apply(socket, agrs);
}
});
})
}
};
});
function activityCtrl($scope, socket){
$scope.createStatus = function(){
var sttData = $scope.stt;
socket.emit('createStt',sttData);
}
socket.on('addStt',function(data){
$scope.user.activity.unshift(data);
});
socket.on('myStt',function(data){
$scope.user.activity.unshift(data);
});
angular.module('webProfileApp',['appServices'])// appServices duoc goi tu services.js
.config(['$routeProvider', function($routeProvider){
$routeProvider.
when('/activity/:userId',{ templateUrl: 'partials/me.html', controller: activityCtrl });
}]);
var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);
io.sockets.on('connection',user.createStt);
exports.createStt = function(socket){
socket.on('createStt',function(dataSocket){
console.log('Save status---------');
var reqBody = dataSocket;
//
//Save data
//
socket.broadcast.emit('addStt',reqBody);
socket.emit('myStt',reqBody);
});
});
我使用具有特殊GUID的房间变体 服务器
var on_connected = function(sockets, socket, user) {
socket.join(token(special_room_name));
}
//...
sockets.in(token(special_room_name)).emit('special_event_name', {...});
客户
socket.on('special_event_name', function(info) {
$scope.users = info;
});
注意:只有当我们在他的套接字上调用了join()
时,客户才会收到此消息,即她是这个房间的成员…您尝试过吗?