Tag: 套接字

套接字挂起错误与多个http.get请求

我正在使用node.js使用http.get请求和async.eachLimit方法下载大量文件。 当我增加5以上的asynchronous方法的并发性,这个“套接字挂断”错误很容易出现,我不明白为什么。 任何人都可以照亮为什么发生这种情况? 这是收到的错误 events.js:72 throw er; // Unhandled 'error' event ^ Error: socket hang up at createHangUpError (http.js:1472:15) at Socket.socketOnEnd [as onend] (http.js:1568:23) at Socket.g (events.js:180:16) at Socket.EventEmitter.emit (events.js:117:20) at _stream_readable.js:920:16 at process._tickCallback (node.js:415:13) 这里是用async.eachLimit方法重复调用的函数 var urlPre = "http://api.steampowered.com/IEconItems_440/GetPlayerItems/v0001/?key="; var urlSidPre = "&steamid="; var urlInvSuf = "&inventory=yes"; var URL = urlPre+steam_API+urlSidPre+sid+urlInvSuf; //log.info("Downloading "+ alias […]

内部的socket.io客户端列表位置

我想知道,如果Socket.io会内部做簿记,并允许用户检索客户列表,或者如果我们将手动需要跟踪连接的客户端列表如下所示: var Server = require('socket.io'); var io = new Server(3980, {}); const clients = []; io.on('connection', function (socket) { clients.push(socket); socket.on('disconnect', function () { clients.splice(clients.indexOf(socket),1); }); }); socket.io是否存储连接列表,如下所示: io.connections 要么 io.sockets 比我期望find这个信息更麻烦,对于更新版本的socket.io。 我正在使用version => "socket.io": "^1.7.2"

如何通过socket.io对象访问express.session.MemoryStore?

我正在做一个loginfunction app.post('/teacherlogin', function(request, response) { var username = request.body.username; var password = request.body.password; con.query('SELECT t_id from login_teacher where username="'+username+'" and password="'+password+'"',function(err,results){ if(results.length > 0) { request.session.regenerate(function(){ request.session.user = username; request.session.type = 'teacher'; request.session.id = results[0].t_id; response.redirect('/teacherhome'); }); } else { response.redirect('teacherlogin'); } }); }); 现在我想发出我已经存储到会话对象的'id'和'type'。 我应该怎么做? 我读过这篇文章,但没有经验,我正面临使用它的困难。 我已经在我的代码中使用它了 var MemoryStore = express.session.MemoryStore; var sessionStore = […]

Socket.io 400(坏请求)

我在我的服务器上有这段代码 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 = require('http').Server(app); var io = require('socket.io')(server); server.listen(3000); io.sockets.on('connection', function (socket) { console.log("Socket connected"); }); 我只是想创build一个连接 和客户端上 – <script src="public/javascripts/socket.io.js"></script> <script> var socket = io.connect('http://127.0.0.1:3000'); </script> 而当我打开我的浏览器,我在控制台中得到这个错误: GET http://127.0.0.1:3000/socket.io/1/?t=1404410309733 […]

Node.js&Socket.io:一个安全websocket连接的自签名证书

我一直在互联网上寻找一个简单的答案,但大多数解决scheme涉及到使用快递和服务HTTP内容的安全连接。 我对Node.js和socket.io的安全web套接字连接( wss )更感兴趣 我不使用Node.js来处理HTTP请求。 我使用与Node.js一起使用的socket.io模块来实时向我的应用程序传递消息。 我只使用节点的networking套接字连接。 我会解释我的设置是什么。 我使用Django作为我的HTTP后端。 用户向Django发出请求,Django将该请求的内容转发给Redis,Node.js在Redis的某个频道上侦听,处理内容并将消息发送给相应的收件人。 非常简单直接。 一切工作正常。 但是,我担心与Node.js的websocket连接是不安全的。 当Node.js向收件人发送消息时,我不希望任何人在两者之间窥探并拦截消息。 我想确保我的用户感到安全,并相信我为他们build立的服务。 我查看了来自CA的自签名证书和证书。 两者都提供相同的安全级别。 由于我只使用Node.js作为socket.io而不提供HTTP内容,所以自签名证书将工作得非常好(我build立的服务是针对移动的,而不是针对浏览器的)。 以下是我的socket.io的实现: var io = require('socket.io').listen(8000); var redis = require('socket.io/node_modules/redis') var redisChannelConnection = redis.createClient(6000, "12.345.678.9"); var redisServer = redis.createClient(6000, "23.456.789.1"); // Subscribe to Redis Channel redisChannelConnection.subscribe('messages'); io.sockets.on('connection', function (socket) { socket.emit('message', 'Hello World'); } 到目前为止,我已经写了一个简单的连接函数。 它作为一个正常的websocket连接。 但是我想使它成为一个安全的websocket连接 。 […]

EC2与socket.io

我已经为我的节点应用程序设置了一个aws微型实例。 我也使用socket.io 。 我收到以下错误: GET http://localhost:3000/socket.io/1/?t=1393065240268 net::ERR_CONNECTION_REFUSED 在应该创build套接字连接的时候在控制台中。 除此之外,节点应用程序的作品。 我怀疑GET不应该是对localhost而是对服务器的地址。 请注意,在服务器端的节点日志中,它服务于socket.io : debug – served static content /socket.io.js 这里是我的服务器的安全组的图片: 。 Socket.io设置: env = process.env.NODE_ENV || 'development', packageJson = require('../package.json'), http = require('http'), express = require('express'), RedisStore = require('connect-redis')(express), SessionSockets = require('session.socket.io'), path = require('path'), settings = require('./settings'), expose = require('express-expose') //Configure server for io and […]

使用Socket.IO进行Android Java套接字通信

我正在编写一个消息应用程序。 我的服务器是build立在node.JS和socket.io上的。 我的客户应该是一个Android应用程序。 然而,我似乎无法find一个体面的库,给我一个Java接口到Socket.IO(通过websockets?)。 有一些图书馆存在吗? 或者我必须回到另一个解决scheme(哪一个?)? 我find了这个cocoa的库: https : //github.com/fpotter/socketio-cocoa 。 Android的任何替代品? 谢谢!

node.js-http:在本地unixpipe道/套接字上侦听

是否有可能在本地unixpipe道/套接字本地监听node.js-http服务器? (例如/var/tmp/http.sock)。 我想与WebSockets和反向代理结合使用它。

SocketIo.use(function(socket,next)) – 下一步如何捕获或接收它?

我find了使用socket.IO 1. * width express的例子。4.这是一个链接 Everyting完美的作品。 但有一个代码: io.use(function(socket, next) { try { var data = socket.handshake || socket.request; if (! data.headers.cookie) { return next(new Error('Missing cookie headers')); } console.log('cookie header ( %s )', JSON.stringify(data.headers.cookie)); var cookies = cookie.parse(data.headers.cookie); console.log('cookies parsed ( %s )', JSON.stringify(cookies)); if (! cookies[COOKIE_NAME]) { return next(new Error('Missing cookie ' + COOKIE_NAME)); […]

将socket.io共享给其他模块给出空对象

我试图在不同的node.js模块共享socket.io的套接字对象,虽然我失败了,并获得空的对象 Cannot call method 'on' of undefined 我的代码: app.js var express = require('express') , app = express(); var server = require('http').createServer(app) , io = require('socket.io').listen(server) var routes = require('./routes') , path = require('path') , rss = require('./routes/rss') // … exports.io = io; 路线/ rss.js io = require(__dirname + '/../app'); console.log(io); io.sockets.on('connection', function( console.log("Connection on socket.io […]