Tag: socket.io

在socket.io上使用socket.id进行私人聊天

我在nodejs和socket.io上更新鲜。 我试图在express框架中使用nodejs,socket.io和angularjs创build聊天应用程序。 我缺乏基本的想法如何聊天私人执行。到现阶段我的代码工作聊天在一组连接的用户。 这里是我的服务器代码 var server = require('http').Server(app); var io = require('socket.io')(server); var socket = require('./routes/socket.js'); server.listen(8000); console.log('server listening on port:8000'); io.on('connection',socket); 和我的主要套接字文件consit代码如: module.exports = function(socket){ console.log('connected'+' '+'socketId :'+socket.id); //console.log(req.session.id); var users =[]; socket.emit(socket.id); socket.on('username',function(data){ users.push({id:socket.id,message:data.username}); socket.emit('username', users) }) socket.on('typing',function(data){ //socket.emit('typing',{message:"helo angular"}); socket.broadcast.emit('typing',{message:data.message}); }); socket.on('typing-stop',function(data){ //socket.emit('typing',{message:"helo angular"}); debugger; socket.broadcast.emit('typing-stop',{message:data.message}); }); socket.on('new-user',function(data){ socket.emit('new-user',data); socket.broadcast.emit('new-user',data); }) socket.on('message',function(data){ […]

从节点中的rest api调用socket.io

我想从我的restful api发出一个socket.io事件。 我目前的设置看起来像这样: app.js设置一个快速的应用程序,并创build所有必要的路线,如: var app = express(); … var routesApi = require('./app_api/routes/index'); app.use('/api', routesApi); module.exports = app; server.js创build一个服务器并且连接express app和socket.io var http = require('http'); var server = http.createServer(app); require('../app_server/controllers/socket.js').socketServer(server); 一切正常,我可以成功地从客户端触发套接字事件,在socket.js中处理它,并发出结果。 然而,我想要做的是从我的restful api调用socket.js方法,我无法弄清楚如何挂钩。 由于套接字服务器在server.js中初始化,我的api路由被连接到app.js中,所以我不确定让它们相互通信的正确方法是什么。 谢谢

自定义Socket.IO中间件错误事件?

Socket.IO允许中间件function传递错误。 var io = require('socket.io')(); io.use(function(socket, next){ if (socket.request.headers.cookie) return next(); next(new Error('Authentication error')); }); 客户端可以通过侦听默认的“错误”事件来监听这些错误。 clientIO.on('error', function(err) { console.log(err); } 有没有办法让Socket.IO中间件发出自定义事件名称而不是“错误”(例如,'authentication_error')?

Socket.io – variables不在socket.on外面更新

我正在使用Socket.io和MongoDB。 当我第一次发送我的socket.emit到服务器,服务器接受参数,并返回我所需的输出。 当我到达client.js上的socket.on时,OrderID显示在控制台上。 然而,当我退出socket.on方法块时, GenOrderIDvariables变得undefined 。 我的问题是:为什么在socket.on之前创build的socket.on ,不能在外部访问。 这里是我正在使用的client.js : // Create order array var Order = []; // Create GeneratedOrderID variable var GenOrderID; // Get School ID from cookie var SchoolID = getCookie("SchID"); // Generate OrderID socket.emit('GenerateOrderID', SchoolID); socket.on('GenerateOrderID', function(GeneratedOrderID) { console.log("OrderID sent from server is: " + GeneratedOrderID); // This returns the desired […]

如何使用angular-socket-io库设置socket.io服务器?

Duplicate中的答案并不是指在我的代码中使用的angularjs库,因为angular度设置angular-socket-io的方式与重复提供的答案不相似! 刚开始工作socket.io第一次,我已经find了angular-socket-io库在客户端工作,但它看起来有点复杂,我只是想发送消息从服务器到客户端使用angular度套接字库,但它没有发生任何想法下面的代码中执行错误是什么? 的index.html <script src="bower_components/socket.io-client/socket.io.js"></script> <script src="bower_components/angular-socket-io/socket.js"></script> server.js var express = require('express'); var app = express(); var server = require('http').createServer(app); var io = require('socket.io')(server); io.on('connection', function(client) { console.log('Client connected…'); io.emit('message', message); }); server.listen(3000); angularSOcketFactory.js angular.module('loggingApp').factory('mySocket', function (socketFactory) { 'use strict'; return socketFactory(); }); angularCtrl.js $scope.$on('socket:someEvent', function (ev, data) { $scope.theData = data; });

node.js socket.io中间件

在node.js中,我们可以像这样在socket.io服务器上添加一些中间件function io.use(function(socket, next) { var req = socket.handshake; var res = {}; cookieParser(req, res, function(err) { if (err) return next(err); session(req, res, next); }); }); 我想知道是否可以添加一些中间件到简单的socket.on函数中,如下例所示 io.sockets.on('connection', function(socket){ socket.on('someSignal', function(data,next){/*middleware function code*/ next();}, function(data){}) });

socket.io多人游戏玩家的观点

我对nodejs和socket.io很陌生。 我正试图创build一个简单的多人纸牌游戏实时。 我现在的问题是我不能从玩家的angular度让玩家的观点显示在正确的div上。 例如,我希望我的比赛场地显示在底部框中,我的对手要显示在顶部框中,同样也与我的对手的观众一起显示。 他会在底部看到自己,看到我在顶部的div。 你如何得到这个效果? 客户 <div class='top'></div> <div class='bottom></div> <script> var socket = io(); socket.on('playerinfo', function(data){ $('.top').html(data[0]); $('.bottom')html(data[1]); }); </script> 服务器 var players = []; io.on('connection', function(socket){ //player is given 'P' with random number when connection is made to represent username socket.name = "P" + Math.floor(Math.random() * (20000)); players.push(socket.name); io.emit('playerinfo', players); } 如果你能指向我的教程或博客相关,这将是很好的。 […]

Socket.io – 错误:socket.packet不是一个函数

我试图发射一个事件到所有套接字,但我有一个错误,我不明白。 代码很简单: io.on('connection', function(socket) { […] socket.on('Security:ImOn', function() { var id = socket.id.split('#')[1]; io.sockets.emit('Security:IsConnected', id); }); […] }); 这个事件只是发送一个ID到所有的套接字,所以他们知道这个新的套接字打开。 系统尝试发出安全性时出现的错误:IsConnected: Missing error handler on `socket`. TypeError: socket.packet is not a function at D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-socket\node_modules\socket.io-adapter\index.js:143:30 at Encoder.encode (D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-socket\node_modules\socket.io-adapter\node_modules\socket.io-parser\index.js:135:5) at Adapter.broadcast (D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-socket\node_modules\socket.io-adapter\index.js:121:16) at Namespace.emit (D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-socket\node_modules\socket.io\lib\namespace.js:219:18) at Socket.<anonymous> (D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-security\src\AuthenticationController.js:30:24) at emitTwo (events.js:100:13) at Socket.emit (events.js:185:7) at Socket.onevent (D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-socket\node_modules\socket.io\lib\socket.js:335:8) at […]

BISON编码/解码socket.io的中间件?

有没有办法篡改socket.io发送/接收之前发送的数据? 我正在考虑像一个快递中间件。 所以我可以在调用普通的.emit()方法之后,在调用socket.on(…)之前对数据进行编码。 在expression我会想像它有点像这样的BISON解码所有传入的请求: app.use(function(req, res, next) { req.body = BISON.decode(req.body); next(); }); 现在怎么可能用socket.io来完成请求被发送的方式也被自动编码? 我知道,socket.io支持中间件以类似的forms来expression,但这只是为了socket.io发送创buildwebsocket连接的实际http请求… io.use(function(socket, next) { //… next(); }); 所以我怀疑这会有什么帮助

在socket.io中获取套接字的空间

如何检索套接字是的成员? 我正在使用socket.io版本1.4 我尝试了this.socket.adapter.rooms但我在Chrome控制台收到这个错误: Cannot read property 'rooms' of undefined 在我的客户端代码中,我有这个方法: send(msg) { if(msg != ''){ var clientInfo = []; clientInfo.push(msg); clientInfo.push(socket.id); clientInfo.push(this.socket.adapter.rooms); socket.emit('message', clientInfo); } } 在我的服务器端: socket.on('message', function(clientInfo){ var clientmessage = clientInfo[0]; var clientid = clientInfo[1]; var clientroom = clientInfo[2]; io.to(clientroom).emit('messageSent', clientmessage); });