Articles of 套接字

Sails.js简单的私人消息传递(pub / sub和模型)

我的目标: 用最简单的代码创build一个使用Sails.js的私人消息传递平台 最佳实践的假设: 使用Sails.js Webockets进行实时通知 使用Sails.js PubSub for DB使用websockets 使用Sails.js .watch()来获取消息 我的问题: 我可以有套接字只看一些新的模型(例如find哪里用户名匹配发件人或收件人ID)或我需要设置房间? select性观察似乎更容易,但文件似乎并不支持它。 如果我上面的任何假设或问题不是实现我的目标的最佳方法,那么使用Sails实现私人消息传递的最简单方法是什么? 我试过的东西: 订阅和观看套接字 阅读Sails.js文档 看着风帆的例子(使用房间) searchStackOverflow和Google for sails聊天示例

Socket.ioerror handling

我有一个Socket.IO的问题。 我想套接字错误后重新连接套接字,但它不会重新连接。 这里是代码: socket = io.connect(host, options); socket.on('connect', this.onConnect); socket.on('error', function() { //here i change options socket = io.connect(host, options); }); 为什么它不创build新的连接? (主机和端口保持不变,并可用于第一个连接)。

node.js – 处理TCP套接字错误ECONNREFUSED

我使用socket.io的node.js让我的网页访问由TCP套接字提供的字符数据。 我对node.js很陌生 用户 —-> 网页 < – (socket.io) – > node.js < – (TCP) – > TCP服务器 代码是仁慈简洁的: io.on('connection', function (webSocket) { tcpConnection = net.connect(5558, 'localhost', function() {}); tcpConnection.on('error', function(error) { webSocket.emit('error', error); tcpConnection.close(); }); tcpConnection.on('data', function(tcpData) { webSocket.emit('data', { data: String.fromCharCode.apply(null, new Uint8Array(tcpData))}); }); }); 在正常情况下,这一切工作正常,但我不能保证TCP服务器会一直在那里。 当它不是,TCP堆栈返回ECONNREFUSED到node.js – 这是完全预期的,我需要处理它的优雅。 目前我看到: events.js:72 throw er; // […]

Socket.io随机断线(v1.0.6)

我正在使用最新版本的socket.io(1.0.6)来制作Phaser和Node的在线多人游戏。 我的问题是,一旦客户连接,他们会偶尔和随机,断开连接。 似乎没有发生这种情况的具体情况。 有时候是在游戏完全闲置的时候,有些时候是所有玩家都向服务器发送input。 通过检查来自socket.io的debugging输出,我发现断开连接的原因是“ping超时”。 具体来说,下面一行是从socket.js库文件中触发的: Socket.prototype.setPingTimeout = function () { var self = this; clearTimeout(self.pingTimeoutTimer); self.pingTimeoutTimer = setTimeout(function () { self.onClose('ping timeout'); // <———————— }, self.server.pingInterval + self.server.pingTimeout); }; 这有什么原因吗? 我只是在本地主机上testing我的服务器,所以我没有理由认为会有任何重大延迟导致超时。 我的套接字是根据socket.io网站上的聊天应用程序示例设置的: 服务器: //http server setup var io = require('socket.io')(http); io.on('connection', function(socket){ //Game logic,socket listeners, io.emits }); 客户: var socket = io(); //client side […]

我应该直接连接到CouchDB的套接字并传递HTTP请求或使用node.js作为代理?

首先,这是我最初提出的问题 。 我使用Appcelerator Titanium来开发iPhone应用程序(最终也是Android)。 我通过使用Titanium的Titanium.Network.TCPSocket对象直接连接到CouchDB的端口。 我相信它利用了Apple SDK的CFSocket / NSStream类。 一旦连接,我只写: 'GET /mydb/_changes?filter=app/myfilter&feed=continuous&gameid=4&heartbeat=30000 HTTP/1.1\r\n\r\n' 直接到sockets。 它保持打开“永远”,并返回JSON数据,每当数据库更新并匹配filter和更改请求。 凉。 我想知道,可以这样直接连接到CouchDB的套接字,或者我可以更好地打开node.js套接字,也可以使用这个CouchDB node.js模块来处理通过node.js的CouchDB代理? 我主要关心的是性能。 我只是没有足够的经验与CouchDB知道是否点击其套接字和直接传递虚假的HTTP请求是好的做法或不。 寻找有关任何后果或替代build议的经验和意见。

Socket.io + Node.js跨域请求被阻止

我正在使用node和socket.io来编写一个聊天应用程序。 它在Chrome上工作正常,但Mozilla提供错误以启用跨源请求。 跨源请求被阻止:相同来源策略不允许阅读http://waleedahmad.kd.io:3000/socket.io/?EIO=2&transport=polling&t=1401964309289-2&sid=1OyDavRDf4WErI-VAAAI的远程资源。 这可以通过将资源移动到相同的域或启用CORS来解决。 这是我的代码来启动节点服务器。 var express = require('express'), app = express(), server = require('http').createServer(app), io = require('socket.io').listen(server), path = require('path'); server.listen(3000); app.get('/', function(req, res) { res.sendfile(__dirname + '/public/index.html'); }); 在客户端。 var socket = io.connect('//waleedahmad.kd.io:3000/'); HTML页面上的脚本标记。 <script type="text/javascript" src="//waleedahmad.kd.io:3000/socket.io/socket.io.js"></script> 我也在应用程序根目录中使用.htaccess文件。 (waleedahmad.kd.io/node)。 Header add Access-Control-Allow-Origin "*" Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type" Header add Access-Control-Allow-Methods "PUT, […]

NPM不安装任何模块:networking套接字挂起

萨拉姆(手段你好):) 我在Ubuntu 12.04上安装了最新版本的node.js,我没有落后于任何代理,而且我的networking设置已经正确configuration,并且自上次NPM正常工作以来保持完好无损。 但是现在NPM挂起安装任何模块,出现以下错误: nasser@nasser-desktop:~/projects/server v3$ npm install simple-proxy npm WARN package.json docco@0.6.2 No repository field. npm http GET https://registry.npmjs.org/simple-proxy npm http GET https://registry.npmjs.org/simple-proxy npm http GET https://registry.npmjs.org/simple-proxy npm ERR! network socket hang up npm ERR! network This is most likely not a problem with npm itself npm ERR! network and is related to network […]

Facebook如何通知和即时显示新的评论或如何Stackoverflow做到这一点?

我是一名PHP开发人员,标题基本上就是这么说的。 不过,我希望得到更深入的信息,因为我开始对我工作的项目stream程应该如何去感到困惑。 对于(networking)应用程序,我需要实现一个像Facebook这样的function,通知用户有关回复/评论,并立即显示这些内容。 我想我可以使用长轮询ajax请求,但这似乎并不是一个很好的解决scheme,因为通知从来没有真正的即时和资源沉重。 所以我应该使用某种forms的套接字,如果我理解正确,Node.Js将是一个不错的select。 所以根据最后的假设,我现在对工作stream程感到困惑。 我想到了两个可能的解决scheme: 1)在我看来,如果我会使用Node.Js,我可以跳过使用PHP,并只在Node.js基础的应用程序。 2)或者我可以使用PHP作为基础,只能使用Node.js通知用户,并即时显示消息,但使用PHP和Mysql保存数据。 这两种可能性混淆了我,我不能确定什么是“最好”和最干净的方式。 我没有太多的Node.js经验,玩了一段时间。 但是在Node.js中pipe理和保存数据似乎很难,所以我想出了选项2。 我知道Facebookbuild立在PHP,所以我假设他们通过PHP保存数据,并通过节点通知/立即显示答复和评论。 有人可以帮我解决这个问题吗? 提前致谢! 编辑:我只是注意到,Stackoverflow做类似的事情。 我在左上angular收到一个通知,在我的问题下面有一个“新问题答案”的框。 我对使用的技术真的很感兴趣。

Node.js和Socket.io创build空间

我可以请求你的帮助吗? 我的代码不适用于使用socket.room创build一个房间,首先我声明了var rooms = ['Lobby']; 我想创build房间并将创build的房间名称推送到rooms[] 。 我的目标是允许用户创build自己的房间,并尽可能删除它。 我在这里用Michael Mukhin的代码作为参考。 这是我的server.js的代码 var redis = require('redis'); var express = require('express'); var app = express(); var http = require('http'); var server = http.createServer(app); var io = require('socket.io').listen(server); var publish = redis.createClient(); var subscribe = redis.createClient(); server.listen(8080); app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); }); var usernames […]

无法加载资源:net :: ERR_INSECURE_RESPONSE socket.io

我正在通过SSL连接到我的服务器上的一个端口…最近,我已经开始得到无法加载资源:net :: ERR_INSECURE_RESPONSE错误在铬连接到node.js + socket.io服务器。这里是我的服务器设置up代码: var fs = require('fs'); var express = require('express'); var routes = require('./routes'); var https = require('https'); var path = require('path'); var socketio = require('socket.io'); var util = require('util'); var url = require('url'); var privateKey = fs.readFileSync('ssl/keys/xxxxxxxxxxxxxxxxxxxxxxxx.key', 'utf8'); var certificate = fs.readFileSync('ssl/certs/xxxxxxxxxxxxxx.crt', 'utf8'); var credentials = {key: privateKey, cert: certificate}; var […]