Tag: 发出

如何在应用程序path中使用socket.io

我用nodejs开发了我的第一个项目。 我使用express 3作为框架和客户端服务器通信的socket.io 。 目前我正在创build一个registry格。 它工作得很好,但我不知道如何使用socket.io并正确地一起express 。 我检查电子邮件和密码是否有效,如果不是,我想推送一个json对象的客户端。 我使用这个应用程序路线: app.post('/user', function (req, res) { var user = new User(req.body.user), errors; function userSaveFailed() { res.render('index'); } errors = user.validation(req.body.user.confirm); user.save(errors, function (err) { if (err) { // Here I would like to send the Object to the client. io.sockets.on('connection', function (socket) { socket.emit('registration', { errors : […]

Node.js – 从另一个函数/对象发出一个事件

我正在挣扎近2小时,仍然没有得到它=(为了解释我得到了下面的代码。 var util = require('util'); var events = require('events').EventEmitter; function a (){ //this is my first function var b_obj = new b(); b_obj.on('event',function(){ console.log('Something happened!'); }); }; function b (){ //this is my second function events.call(this); this.emit('event'); }; util.inherits(b, events); a(); 所以我试图做的是:我有一个叫“a”的函数。 这个函数调用第二个称为“b”的函数。 该函数根据validation的结果validation一些数据并发出事件。 我发现,听众工作正常,事件正确发出。 但是,看起来事件是在函数b的上下文中发出的,而侦听器在函数a的上下文中工作。 为了进一步调查,我添加了以下行到函数b: this.on('event', function(){ console.log('event emitted!'); }); 这工作。 有谁能够帮助我? 我相信这个解决scheme非常简单。 […]

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 […]

socket.io不能调用未定义的方法“emit”(使用node.js和express,jade)

我正在跟着那个有点老的聊天的例子,但是我从这开始。 但是,所有在该页面中描述的工作后,我得到错误如下: TypeError: Cannot call method 'emit' of undefined at /Users/juneyoungoh/Documents/Nodejs/ChatSample/app.js:109:29 at Array.forEach (native) at userJoined (/Users/juneyoungoh/Documents/Nodejs/ChatSample/app.js:108:33) at Socket.<anonymous> (/Users/juneyoungoh/Documents/Nodejs/ChatSample/app.js:62:7) at Socket.EventEmitter.emit (events.js:98:17) at Socket.onevent (/Users/juneyoungoh/Documents/Nodejs/ChatSample/node_modules/socket.io/lib/socket.js:330:8) at Socket.onpacket (/Users/juneyoungoh/Documents/Nodejs/ChatSample/node_modules/socket.io/lib/socket.js:290:12) at Client.ondecoded (/Users/juneyoungoh/Documents/Nodejs/ChatSample/node_modules/socket.io/lib/client.js:193:14) at Decoder.Emitter.emit (/Users/juneyoungoh/Documents/Nodejs/ChatSample/node_modules/socket.io/node_modules/socket.io-parser/node_modules/component-emitter/index.js:134:20) at Decoder.add (/Users/juneyoungoh/Documents/Nodejs/ChatSample/node_modules/socket.io/node_modules/socket.io-parser/index.js:247:12) 源代码的问题部分是 function userJoined(uName) { Object.keys(socketsOfClients).forEach(function(sId){ io.sockets.sockets[sId].emit('userJoined ', {'userName' : uName}); }); } 所以我跟踪对象io.sockects和我在屏幕上得到的是下面 { name: '/', server: […]

socket.io客户端“emit”在Chrome控制台中显示奇怪的错误

我正在开发一个简单的应用程序,使用当前最新版本的nodejs + socket.io在Windows上。 我在客户端创build套接字时遇到了一个问题,但是socket.emit会在控制台中导致以下输出(使用Google Chrome): GET http://0.0.34.184:8888/socket.io/1/?t=1321385855665&jsonp=0 这是非常奇怪的,因为我正在testinglocalhost:8888所以它应该至less127.0.0.1而不是0.0.34.184。 该页面上的socket.io客户端从标签中的服务器请求如下: <script type="text/javascript" src="socket.io/socket.io.js"></script> 然后我使用下面的代码连接: socket = io.connect('localhost:8888'); socket.on("my_event", receiveNetEvent); console.log('LOG: sio init complete, socket=' + socket); 日志指出socket = [Object object]不是null或undefined,所以一切都应该工作。 发送itseld在以下函数中执行: function sendRequest(request){ socket.emit('request', request); } 传递给函数的请求对象是这样形成和传递的: var initRequest = {}; initRequest.subject = 'weather'; initRequest.key = 'initial'; sendRequest(initRequest); 再次,根据console.log() ,它是一个有效的json对象。 所有这一切使我对发生的任何可能的原因完全无能为力。

发射事件不会触发

我排放事件只是不想开火。 我在nodejs上是个新手,对不起,我为几个小时解决不了。 客户端模块 var Client = require('steam'); var EventEmitter = require('events').EventEmitter; var newClient = function(user, pass){ EventEmitter.call(this); this.userName = user; this.password = pass; var newClient = new Client(); newClient.on('loggedOn', function() { console.log('Logged in.'); // this work this.emit('iConnected'); // this don't work }); newClient.on('loggedOff', function() { console.log('Disconnected.'); // this work this.emit('iDisconnected'); // this don't work }); […]

nodejs socket.io在函数循环内部发射

我想通过循环内的socket.io发射。 为此,我做了一个很好的触发器,但是在每个触发器上我调用了socket.emit,并且只有第一个发射器工作。 这里是服务器代码: var server = require('http').createServer(handler); var io = require('socket.io')(server); var fs = require('fs'); var ee = require('events').EventEmitter; var trig = new ee(); server.listen(8080); function handler(req,res){ fs.readFile('./index.html', 'utf-8', function(error, content) { res.writeHead(200, {"Content-Type": "text/html"}); res.end(content); console.log('page affichée'); }); } io.on('connection',function(socket){ socket.on('run',function(v){ run(v); }); trig.on('node',function(i){ io.sockets.emit('node',i); console.log(i); }); }); function run(v){ for(i=0;i<v;i++){ trig.emit('node',i+1); } } […]

在node.js中使用emit函数

我不明白为什么我不能让我的服务器运行发射function。 这是我的代码: myServer.prototype = new events.EventEmitter; function myServer(map, port, server) { … this.start = function () { console.log("here"); this.server.listen(port, function () { console.log(counterLock); console.log("here-2"); this.emit('start'); this.isStarted = true; }); } listener HERE… } 听众是: this.on('start',function(){ console.log("wtf"); }); 所有的控制台types是这样的: here here-2 任何想法,为什么它不会打印'wtf' ?

是否socket.io发出适当的callback?

最近我一直在使用socket.io,发现这个有趣的事情,我可以发出这样的函数callback。 我开始像这样在客户端发出: client.emit('eventToEmit', dataToEmit, function(error, message){ console.log(error); console.log(message); }); 然后我可以像这样从服务器端发起一个callback: client.on('eventToEmit', function(data, callback){ console.log(data); callback('error', 'message'); }); 一切工作正常,没有错误,但我有兴趣,如果做这样的事情是适当的,因为我没有看到任何类似的文件或任何例子到目前为止。