Tag: 套接字

Sails.jssockets。 好的和坏的方面。 与socket.io不同

所以我现在正在学习Sails.js,更具体地说是框架的集成套接字function。 我喜欢这个框架,因为它非常适合构buildAPI。 我的问题是你可以给我一些比较socket.io和sails套接字。 我的意思是好的和坏的方面,是值得学习的风帆套接字或我应该只使用socket.io? 我可以在帆中使用socket.io是另一个问题。 我没有findSails.js套接字的任何教程,我很困惑。 另外我是新来的套接字,所以如果你可以像初学者一样解释。

Socket.io node.js,如何logging连接时间避免或占用页面刷新/多个套接字?

到目前为止,我完全被socket.io所困惑,sockets实际上是什么,等等。我需要做的是将通过“id”(作为URL参数)标识的两个用户连接到一个房间定义为一个URL参数,如下所示: http://www.example.com/room1/user1 http://www.example.com/room1/user2 客户端: var socket = io(); 在服务器上: app.get('/:id/:role', function(request, response) { var room = request.params.id; var user = request.params.role; io.sockets.on('connection', function(socket){ socket.join(room); console.log(user+' has connected to '+room) socket.on('disconnect', function(){ socket.leave(room); console.log(user +' has disconnected from '+room); }); }); response.render('pages/room'); }); 我需要做的就是在这个特定的“房间”中logging这两个用户的连接时间和断开时间。 连接和断开控制台语句的工作,但他们最终得到logging多次,并在页面刷新时,他们开始logging许多次: 11:20:23 web.1 | user1 has connected to room1 at 1439220023347 //user1 […]

如何使用需要套接字连接的中间件?

我正在使用express.io并试图制作一个需要通过两个套接字连接到远程服务器的中间件。 但是,我有一个问题。 var net = require('net'); module.exports = function (host, port) { return function (req, res, next) { req._messages = net.connect(port, host); req._commands = net.connect(port, host); req._messages.on('data', function (data) { req.io.broadcast('data', data.toString('ascii')); }); req._messages.write('CF I\r'); // initialization command next(); } } 然后在我的主要应用程序: var port = process.env.CYLON_PORT; var host = process.env.CYLON_HOST; var app = require('express.io').http().io(); app.use(require('./cylon/controller')(host, […]

在策略中过滤通知

无论何时创build模型(或删除/修改),每个连接的套接字都会通过Sails autowatch设置进行通知。 这在一定程度上是好的,但我想在某个时候过滤这些通知。 我的应用程序有自己的“通知”,应该发送到各自的接收器。 所以他们的解剖有点像: id, message, receiver, sender 。 身份validation是本地护照实施。 监听notification事件会导致在每次创build通知时收到通知。 // client: app.js io.socket.on('notification', function(evt) { console.log(evt); }); 我现在试图实现的是过滤这些通知以匹配用户ID。 我写了一个适用于/notification事件的策略。 // Policy: forUser module.exports = function(req, res, next) { // … whatever … // return next(); } 在政策内 'notification': { 'create': ['passport', 'forUser'] } 我现在的问题是:如何实施这个政策? 我想只是检查notification.receiver == req.user.id ,但如何获得政策内的通知模型(如果这是正确的方式)呢? 谢谢。 编辑 :尝试实施房间的解决scheme,但我没有得到任何通知在客户端上。 我在我的NotificationController中更改了我的订阅function: […]

使用socket node.js检测用户切换页面

当用户转到网站内的其他页面时,我试图从Redis频道取消订阅。 我已经尝试检测到一个断开套接字事件,当用户点击一个链接,但事件从未触发。 // Do things req.socket.on("disconnect", function(){ console.log("Disconnected"); conexion.punsubscribe(); }); 你知道什么套接字事件,我可以用来赶上这个行动? 谢谢。

在客户端socket.io之间发送消息

我正在开发一个聊天应用程序,并使用socket.io / node 。 基本上我想出了以下策略: 从客户端发送的消息由套接字服务器接收,然后发送给接收客户端。 在后台,如果用户希望看到他以前的对话,则将其存储在数据库上的消息中以供稍后检索。 这种方法的优点是用户几乎是立即得到消息,因为我们不等待数据库操作完成,但是如果数据库操作失败,并且恰好这时客户端刷新了它的页面来获取消息,它不会得到的。 从客户端发送消息到服务器,然后服务器将其存储在数据库中,然后只发送给接收客户端。 优点是我们确保消息只有存储在数据库中才会被接收到客户端。 因为我们将在减慢消息传递的过程中进行数据库操作,所以它将无法接近实时。 发送消息到客户端,然后存储在caching层(例如redis),然后立即将其广播到接收客户端。 在后台保持从redis获取logging并更新数据库。 如果客户端刷新页面,我们首先查看数据库,然后查看redis层。 优点是我们可以更快地交stream沟通,并确保消息按需呈现。 与上述实现相比,这是相当复杂的,我想知道是否有更简单的方法来实现这一点? 我的问题是,如果你正在构build一个严格的聊天应用程序,以确保两者 – 更快的通信和数据持久性是什么路要走。 什么是一些像Facebook,WhatsApp的应用程序等使用相同的应用程序的策略? 我不是在寻找确切的例子,但有几个指针会有所帮助。 谢谢。

Mongoose不能在socket.io调用中保存()

这是我的设置: app.js io.on('connection', function(socket) { socket.on('game-save-comment', function(data) { var result = require('./sockets/games.js')(data); if (result) { socket.emit('comment-ok'); } else { socket.emit('comment-not-ok'); } }); }); ./sockets/games.js var Game = require('mongoose').model('Game'); module.exports = function(data) { var gid = data.gid; var index = data.move; var comment = data.comment; return game = Game.findOne({gid: gid}, function(err, game) { if (!game || […]

node.js当达到maxSockets时会发生什么?

我想知道当达到maxSockets时会发生什么? 如果我使用的服务允许我创build一个自定义的http.Agent并指定maxSockets为1.当我尝试发出多个并发请求时会发生什么? 每个请求会超出初始块,直到初始完成? 然后套接字将成为下一个请求可用? 和其他所有人阻止? 我肯定会这样认为,但是在文档中找不到任何具体的内容,而且是套接字编程的新手段。

无法启动nodejs程序,socket:(87)参数不正确

我已经安装nodejs在我的Windows 7的最终x64。 安装是成功的,但是当我试图打开命令行并键入npm或节点它显示此消息: 套接字:(87)参数不正确。 您的环境已经设置为使用Node.js和npm。 C:\ Users \ Serge>节点套接字:(87)参数不正确。 C:\ Users \ Serge> npm socket:(87)参数不正确。 套接字:(87)参数不正确。 C:\ Users \用户塞尔> 不要犹豫,留下您的意见。 谢谢!

Node.js可写入stream创build错误的文件(更大和不可读)

我正在写一段代码,通过Socket.io将文件从Angular.js客户端发送到Node.js服务器。 客户端将文件分块并通过Socket.io发送到服务器。 该文件在客户端使用JavaScript的FileReader读取: var chunkSize = 524288, // 0.5mb reader = new FileReader(); reader.onload = function(e) { // ok, this one is very simplified so that I don't have to copy // all of my code here, but basically I send files with an offset // like: // file.data.substr(offset, Math.min(chunkSize, file.size – offset)); // for […]