Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使用socket.io将数据发送到指定的客户端?有棱角的、点头的、快速的_Node.js_Sockets_Angularjs_Express_Social Networking - Fatal编程技术网

Node.js 如何使用socket.io将数据发送到指定的客户端?有棱角的、点头的、快速的

Node.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

我正在用NodeJS、Express和Angular编写一个社交网站

现在我已经处理了服务器和客户端之间的套接字,但我想只向用户的朋友发送服务器端状态,而不是向整个网络广播

这是我的代码:

在客户端中

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);

        });
    });
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()
时,客户才会收到此消息,即她是这个房间的成员…

您尝试过吗?