Tag: 套接字

NodeJS + Android,Socket.io聊天,应用程序在离开聊天室的用户崩溃

我正在使用Socket.IO来创build一个聊天应用程序。 我是node.js和android的初学者。 实际上聊天工作,但是当一个人离开聊天室,任何聊天室,应用程序崩溃,我不得不重新启动它为另一个用户/用户能够再次聊天。 我得到的错误如下: C:\ Users \ Tasos \ Desktop \ node.js server \ node_modules \ socket.io \ node_modules \ engine.io \ node_modules \ ws \ node_modules \ ultron \ index.js:80 if(this.ee._events.hasOwnProperty(event )){^ TypeError:this.ee._events.hasOwnProperty不是Ultron.remove(C:\ Users \ Tasos \ Desktop \ node.js服务器\ node_modules \ socket.io \ node_modules \ engine.io \ node_modules \ ws \ node_modules \ […]

Socket IO Client接收对象与服务器发送的不同

我从我的服务器端发送一个对象到我的客户端,而客户端获得的对象与我发送的对象完全不同。 这是我的意思: 码 服务器端代码: //Basic setup for the example var res={}; res.models=[]; res.models[0]={}; //The OLD (wrong) value res.models[0]['id']="b4fd12f1-61ca-4445-b916-62617f1c0a78"; //The NEW (correct) value res.models[0]['id']="fb8f83e2-e157-4e1e-8315-8e5f03b44691"; //Output what the id is, this is always the correct id! console.log("res.models[0]['id']: ",res.models[0]['id']); socket.emit("updateRealSeatSelect", res); 客户端代码: socket.on("updateRealSeatSelect", function(data){ //Output the id when we get the object. This is always wrong! console.log("res.models[0]['id']: "+data.models[0]['id']); […]

Socket.IO发送聊天消息到房间

我现在有一个系统可以为个人消息创build空间: socket.on("chat message", function(msg) { var roomname; if (msg.recipient > msg.sender) { roomname = msg.sender + "-" + msg.recipient; } else { roomname = msg.recipient + "-" + msg.sender; } if(!io.sockets.adapter.sids[users[msg.sender]][roomname]) { socket.join(roomname); } var clients = io.sockets.adapter.rooms[roomname].sockets; console.log(clients); io.in(roomname).emit("chat message", msg); }); if / else语句基本上以字母顺序创build房间名称(person1-person2),以防双方join房间时出现混淆。 如果它没有在这个房间,套接字join这个房间。 这一切都是在服务器收到“聊天消息”时触发的。 我已经确认套房连接部分的工作。 但是,我似乎没有得到客户端的消息: var socket = io(); socket.on("chat […]

VueJS:自定义Socket.io发出触发时没有得到处理

我正在按照vue-socket.io npm下载页面上的说明进行操作。 但是,我不能得到this.$socket.emit方法来工作。 我有这个在我的Main.vue组件: sockets: { connect() { console.log('socket connected') }, getAllOnline(token) { console.log(`Your token is ${token}`) } }, created() { this.$socket.emit('getAllOnline', '123213') } 我在我的main.js文件中设置了VueSocketio ,如下所示: import VueSocketio from 'vue-socket.io'; Vue.use(VueSocketio, 'http://localhost:8080/'); 我期待logging任何传递给getAllOnline()函数的值。 但是只有sockets对象中的connect()callback被触发。 为什么不触发getAllOnline的callback? 完整的main.js文件: // require some files require('./assets/css/reset.css') require('./assets/css/common.css') // The Vue build version to load with the `import` command // (runtime-only […]

在NodeJS的TCP服务器上实现简单的身份validation

我几乎可以肯定,我不明白TCP服务器的基本概念,我不把数据视为stream,更糟糕的是,我可能不会很好地使用这些事件。 我想让tcp服务器写入套接字“username:”,这样你就可以input你的用户名(在像netcat或telnet这样的tcp客户端上),然后tcp服务器必须把下一个数据作为用户名。 到目前为止它确实有效(尽pipe我几乎可以肯定有更好的方法可以做到这一点),接下来它应该写上“password:”,这样你可以input你的密码,如果是正确的,那么应该validation证书和做更多的东西…但是会发生什么,当你input密码,它再次写入“密码:”,因为socket.write('password: '); socket.on('data',function(){//etc}); 这是我迄今为止的代码: var net = require('net'); var server = net.createServer(function (socket) { socket.addListener("connect", function () { socket.write('username: '); socket.on('data',function(data){ var username = data.toString().replace('\n',''); socket.write('password: '); socket.on('data',function(data){ var password = data.toString().replace('\n',''); // verify authentication here // Do more stuff }); }); }); }); server.listen('8000','localhost'); 什么是正确的方法来实现这个? 我只是实现这一点,因为我需要接收上传(stream)可能没有结束,并不是一次全部来。 我真的很愚蠢,试图解决这个问题与TCP服务器? 提前致谢。

在Node.js TCP套接字中testingKeepalive的function

我一直在testingNode.js TCP套接字中keepalive的function。 看来我在这里错过了一些东西! 这是我的服务器代码: var net = require('net'); function accept(socket) { socket.setKeepAlive(false); socket.on('data', function(data) { console.log("DATA"); console.log(data); }); socket.on('error', function (e) { console.log("ERROR"); console.log(e); }); socket.on('close', function () { console.log("CLOSE"); }); socket.on('end', function () { console.log("END"); }); socket.write("Hi"); } var server = net.createServer(accept); server.listen(8011); 这是我的客户代码: var net = require('net'); var socket = new net.Socket(); socket.setKeepAlive(false); […]

node.js中的socket.setTimeout()

我试图实现基于networking模块的HTTP服务器。 我需要实现保持活动,所以我打电话给sock.setKeepAlive(true) ,然后sock.setTimeout超时2秒后closures套接字。 这是我的代码: var server = net.createServer({ allowHalfOpen: false},socketListener); function start(port){ server.listen(port,'localhost'); } function socketListener(sock){ sock.setEncoding("utf8"); sock.setKeepAlive(true); sock.setTimeout(2000,function(){ sock.end("HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n"); }); sock.on("data",responser.responserCreator(sock,httpParser,baseDir,stat)); } 但是,当我第一次打开浏览器和http://localhost:1234/profile.html它工作正常,但如果我在2秒后刷新它会引发exception – 错误:Socket.writeAfterFIN [写入](net.js:274:12) 如果我评论超时everthing正常工作。 我的代码有什么问题?

node.js服务器端的侦听器太多了?

现在我有听众代码如下。 但是,我的服务器不断告诉我 (node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit. Trace at EventEmitter.addListener (events.js:160:15) at Hub.<anonymous> (/home/ec2-user/AjaxIM-retail/server/middleware/im/hub.js:88:33) at /home/ec2-user/AjaxIM-retail/server/libs/utils.js:43:23 at IncomingMessage.<anonymous> (/home/ec2-user/AjaxIM-retail/server/libs/authentication/lp/index.js:75:33) at IncomingMessage.EventEmitter.emit (events.js:117:20) at _stream_readable.js:920:16 at process._tickCallback (node.js:415:13) (node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit. 我读了一些post,有人build议我“不要添加太多的听众”…这是正确的吗? 我该怎么办? this.events.addListener('update', […]

Socket.io通道和消息callback

你好,我想知道这是如何真的工作: subscriber.on('message', function(channel, message) { io.sockets.emit('message', {'channel': channel, 'message': message}); 我真的想在你的帮助下学习socket.io,你能帮我理解这个线是什么吗? 什么message会发出? 这是什么channel ? 我想了解这行代码,请帮助我的家伙。 谢谢。

套接字而不是ajax进行客户端/服务器通信

在这个node.js论坛应用程序https://github.com/designcreateplay/NodeBB ,它允许你跟随网站上的其他用户,我注意到,它似乎使用套接字来沟通信息,我会被期望通过通信ajax发布请求。 例如,当你点击button关注另一个用户(这个论坛软件允许)时,客户端上的套接字就会发出一个'api:user.follow'事件,然后在服务器上被监听,如下图所示。 你能解释为什么有人会或不想使用套接字而不是Ajax来实现这种function? 我认为每个人都有优点和缺点,但是我不认识他们。 客户 followBtn.on('click', function() { socket.emit('api:user.follow', { uid: theirid }, function(success) { if (success) { followBtn.addClass('hide'); unfollowBtn.removeClass('hide'); app.alertSuccess('You are now following ' + username + '!'); } else { app.alertError('There was an error following' + username + '!'); } }); return false; }); 服务器 socket.on('api:user.follow', function(data, callback) { if (uid) { […]