Tag: connect

使用socket.io连接到公共IP地址

我需要做什么才能使用我的公共IP地址连接到服务器? 到目前为止,我只能在本地连接。 这是我的代码。 服务器代码: var app = require('express')(); var server = require('http').Server(app); server.listen(80, function(){ console.log("Server is running…"); }); 客户端代码(有时会触发一次,直到连接): try { socket = IO.socket("http://192.168.1.33:80"); } catch (URISyntaxException e) { e.printStackTrace(); } socket.connect(); 好像只是改变本地地址给公众一个不行。 我到底需要做什么? 更新:我做了这些来解决这个问题。 使用我的电脑公共IP地址。 (不是路由器的) 将端口从80更改为另一个端口。 允许防火墙打开端口。 很重要 端口转发并确保端口处于打开状态。 港口80仍然closures,即使在第3步,但其他港口工作。

防止favicon.ico发出第二个请求 – Node.js

我试图阻止favicon.icoforms进行套接字连接时的第二个请求。 这是我的服务器: var io = require('socket.io'), connect = require('connect'); var app = connect() .use(connect.static('public')) .use(function(req, res, next){ if (req.url === '/favicon.ico') { res.writeHead(200, {'Content-Type': 'image/x-icon'} ); next(); } }) .use(function(req, res){ res.end('stupid favicon…'); }).listen(3000); var game = io.listen(app); game.sockets.on('connection', function(socket){ socket.emit('entrance', {message: 'Welcome to the game!'}); socket.on('disconnect', function(){ game.sockets.emit('exit', {message: 'A player left the game…!'}); […]

单页面应用程序,http或websockets,连接/expression完成?

这是涉及单页networking应用程序的问题,我的问题是粗体。 警告:我几乎不是这方面的专家,如果我在理解HTTP和WebSockets的工作方面有错误,请纠正我的错误。 我对HTTP restful API的工作原理是无状态的。 我们使用像connect.session()这样的工具将某种types的状态插入到更高级别的应用程序中。 由于每一个请求都是新的,我们需要一种方法来重新标识自己到服务器,所以我们创build一个独特的令牌来回发送。 Connect的会话中间件以非常酷的方式为我们解决了这个问题。 把它放到你的中间件堆栈中,并且为每个请求附加完整的应用程序。 洒一些握手,你可以相当容易地将该会话信息传递给socket.io,更加棒。 使用RedisStore来保存信息以将其与连接/快速应用程序分离,而且更加棒。 我们在这里说双重彩虹真棒。 所以现在理论上可以有一个不依赖于连接/会话的单页面应用程序,因为在处理websocket时不需要多于一个会话(初始握手)。 socket.io已经让你很容易地访问这个sessionId,问题解决了。 而不是这个authentication工作stream程: 从发布请求中获取电子邮件和密码。 通过电子邮件查询您select的数据库以获取他们的密码哈希。 比较哈希。 redirect到“OK!” 或“NOPE!”。 如果确定,存储会话信息并让connect.session()处理其余部分。 现在变成: 听取login事件。 从事件callback中获取电子邮件和密码。 通过电子邮件查询您select的数据库并获取他们的密码哈希。 比较哈希。 发一个“OK!” 或“NOPE!” 事件。 如果确定,做一些我现在不会想到的东西,但同样的效果应该是可能的? 通过使用连接我们还能从中受益吗? 以下是我常用的列表: logging器的开发模式 图标 bodyparser 静态服务器 护照(取决于连接/快递的authentication库,类似于everyauth提供的) 加载初始单页面应用程序的代码将处理设置一个静态服务器和favicon。 像护照这样的东西可能会更棘手的实施,但肯定不是不可能的。 我列出的其他一切都无关紧要,您可以轻松地为websockets实现自己的debugginglogging器。 现在有什么阻止我们有一个单一的基于http的index.html文件封装一个websocket连接,并不依赖于连接呢? 如果你想要一个单一的页面应用程序,同时通过其自动魔法回退提供交叉浏览器支持,socket.io是否真的能够使这种types的应用程序体系结构工作,而无需设置自己的HTTP宁静API? 现在唯一真正的缺点是在客户端caching结果? 难道你不能为本地存储? 我认为为search引擎创build可索引/可抓取的内容页面并不是什么大不了的事情 – 你基本上会创build一个工具,从持久化数据库中创build静态html文件吗?

适合NodeJS的RBAC库

我们正在为基于angular色的访问控制(RBAC)寻找合适的Nodejs库。 我们做了一些调查,发现最stream行的解决scheme是https://github.com/OptimalBits/node_acl 它是基于Redis和Express中间件支持的访问控制列表模块。 这个图书馆有非常好的支持,而且非常受欢迎。 但在同一时间这里是另一个解决schemehttps://github.com/ForbesLindesay/connect-roles 这是授权提供商,旨在与连接或expression。 我看到最近一次承诺这个回购是在1年前完成的。 所以支持不是很好。 有人可能会build议什么库会更好地处理复杂的应用程序中的angular色和权限? 先谢谢你

C#和Node.js / crypto的通用encryption/解密代码示例

我正在尝试在IIS中使用应用程序请求路由(ARR)将一组path传递给Node.js网站。 我的问题是能够获取/设置身份validation票在任何一方。 我只是真的需要一个简单的encryption/解密对的例子,它将为C#和Node.js开箱即用,两者的结果相同。 我会在接下来的几天内自己处理这个问题,并打算回答,如果没有人在我面前答案。 我的意图是在Node.js端将节点端写为连接/expression模块。 我已经在ASP.Net解决scheme中进行了自定义身份validation,并且可以轻松地将我当前的方法replace为在两个平台上都可以安全的方法(只要它们共享相同的密钥)。 当前在AccountController.cs创buildvalidationCookie的代码 private void ProcessUserLogin(MyEntityModel db, SiteUser user, bool remember=false) { var roles = String.Join("|", value:user.SiteRoles.Select(sr => sr.Name.ToLowerInvariant().Trim()).Distinct().ToArray()); //update the laston record(s) user.UserAgent = Request.UserAgent; user.LastOn = DateTimeOffset.UtcNow; db.SaveChanges(); // Create and tuck away the cookie var authTicket = new FormsAuthenticationTicket( 1 ,user.Username ,DateTime.Now ,DateTime.Now.AddDays(31) //max 31 days ,remember ,string.IsNullOrWhiteSpace(roles) […]