Articles of 套接字

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

Socket.io:在任何时候获取客户端会话ID

我知道如何检索用户连接时的客户端会话ID。 但是,我想随时找回它,例如当客户点击某个东西时,我想知道是谁点了什么,他们的sessionID是什么。 socket.sessionID不起作用,也没有socket.handshake.sessionID 例如 : 我有这个快车路线: .get('/result/:survey', function(req, res) { res.redirect('/result/'+req.params.survey+'/1'); }) 就在redirect之前,我想让用户join一个套接字空间,并获得他们的sessionID。 我怎么可能这样做? 根据文档,这将是socket.join('room')但我怀疑socket只代表我与客户端,而不是与其他客户端的连接。 也许我只是无法理解套接字!

主动FTP客户端为Node.js

我正在努力编写一个针对Filezilla的ftp客户端,使用node.js支持主动模式。 我是新来的ftp和node.js。 我想通过这个练习,我可以很好地理解TCP套接字通信和ftp协议。 而且, node-ftp和jsftp似乎不支持活动模式,所以我认为这将是一个不错的(虽然很less使用)除了npm。 我有一些至less有时可用的概念代码的certificate,但不是所有的时间。 在工作的情况下,客户端用文本“hi”上传一个名为file.txt的文件。 当它的工作,我得到这个: 220-FileZilla Server version 0.9.41 beta 220-written by Tim Kosse (Tim.Kosse@gmx.de) 220 Please visit http://sourceforge.net/projects/filezilla/ 331 Password required for testuser 230 Logged on listening 200 Port command successful 150 Opening data channel for file transfer. server close 226 Transfer OK half closed closed Process finished with exit code […]

Node.js + Socket.io将数据存储在套接字中

我目前正在使用node.js和使用socket.io模块构build一个应用程序。 当用户连接时,我将特定于用户的数据存储在其套接字中。 例如 io.sockets.on('connection', function (socket) { socket.on('sendmessage', function (data, type) { socket.variable1 = 'some value'; socket.variable2 = 'Another value'; socket.variable3 = 'Yet another value'; }); }); 虽然这工作,我的问题是,这是一个很好的方法来做到这一点。 我正在有效地存储会话数据,但有没有更好的方法来做到这一点?

一个networking服务器的UDP穿孔?

对于我的学术项目,我正试图做到这一点。 一个web服务器节点JS应用程序监听端口3000.所以,如果你curl http://localhost:3000你会得到Hello World! 。 (一个简单的网页。 现在我在本地机器上运行在webserver上面。 而我的调制解调器在NAT之后。 假设如果我在调制解调器端口转发到myip:3000那么它对世界开放。 但这里是我卡住的最大的东西 – 我不想使用调制解调器的端口转发,而是,我将使用第三方服务器的UDP冲孔。 现在我的要求是来自net的任何人都应该能够通过curl http://third-party-server-ip:3000来访问我的web curl http://third-party-server-ip:3000 。 我正在尝试写另一个客户端 – 它打开一个连接到第三方服务器。 说它在41234港口41234了一个洞。 那个港口是开放的。 第三方主机可以发送一些东西到那个端口。 现在任何人在互联网上启动此命令curl http://third-party-ip:3000到第三方主机。 所以第三方返回myip:udpPunchHolePort即myip:41234 。 任何人将再次curl到myip:41234它将被节点js UDP punch app收到,所以它将redirect到localhost:3000 。 最后, anyone将收到localhost:3000的响应。 我的两个问题 – 有没有比我在这里提出的更好的方法? 有没有什么知名的node-js lib这种东西,我看,我可以用UDP punch hole 。 或者我正在考虑编写一个Lib来完成这个工作 – 这听起来像是在重新发明轮子吗? 注意 – 在这个学术项目中,我们正试图学习如何让任何本地应用程序在没有调制解调器端口转发的情况下向世界开放。 我们阅读了Skype协议分析 ,这也是我们的灵感。