Tag: socket.io

NowJS在丢失连接后手动启动新的连接

我有一个情况,客户端连接到运行nowjs的node.js服务器并保持连接相当长的时间(大约30分钟)。 在一些浏览器上,尽pipe连接在一段时间后被丢弃,客户端断开连接。 我在客户端实现了一个断开处理程序,如下所示: now.core.on('disconnect', function () { // we should reconnect here, maybe after a short timeout }); 我不清楚的是如何触发重新连接。 这对于有经验的用户来说可能是显而易见的,但是我没有设法解决这个问题。 now.js脚本初始化页面加载之后,我可以使用now对象,但我无法弄清楚如何重复这个过程,而无需重新加载页面。 谢谢!

将消息发送到特定的客户端组中

通过套接字io向一组用户发送消息的最佳方式是什么,例如只有特定聊天室中的用户而不是所有用户? 我知道只发送数据到select用户使用Socket.io节点,但socketio版本0.7最近被释放,似乎有可能是一个更优雅的方式与新的api使用get / set或命名空间?

WebSocket没有连接到socket.io

我用socket.io Node.js来实现我的网页之一的websockets。 server.js(Node.js运行的)有这样的代码: var http = require("http").createServer(), io = require("socket.io").listen(http); http.listen(8080); io.sockets.on("connection", function(socket) { socket.emit("message", {hello:"world"}); }); 这是我试图连接的代码: var socket = new WebSocket("ws://92.60.122.235:8080/"); socket.onopen = function() { alert("Socket has been opened!"); } 当我加载页面,没有任何反应。 我使用的是Chrome,而且我知道支持websockets。 在错误控制台中没有错误,如果我观察到来自命令行的socket.io服务请求,我没有看到任何用户连接。 据我所知这应该工作,谁能解释什么可能会出错?

node.js / socket.io消失的variables

在我的应用程序,我有以下几点: client.on('test', function(req, fn) { var returnArr = []; redis.hkeys(req, function (err, replies) { replies.forEach(function(reply, i) { if (reply.indexOf('list.') > -1) { redis.hgetall(reply.substring(5), function(err, r) { returnArr.push({name:r['name'],index:i}); console.log(returnArr); }); } }); console.log(returnArr); }); console.log(returnArr); }); 由于某些原因,第二个和第三个日志包含一个空数组,即使该数组在事件开始时被声明了一次。 有任何想法吗? 编辑:对不起,我改变了这个variables的名字,当我没有想到这里发布。 这发生在什么时候命名。

坚持套接字刷新和页面更改

我有我的NodeJS和Socket.IO服务器运行完美,但我注意到,每次刷新浏览器页面或导航到不同的页面时,套接字断开连接和重新连接。 我怎样才能让页面之间的套接字持久? 谢谢,我想到了这个,但是想避免它,因为这对我所做的系统来说是一个相当大的改变,并且会是一个相当的工作。 套接字连接/断开的唯一影响是“用户login”计数器。 但我想我可以在Node服务器上使用setTimeout来解决这个问题,所以如果套接字在2秒内断开连接并重新连接,计数器将不会改变。 就这个柜台而言,这是最好的解决方法吗?

dynamic连接到socket.io

我试图通过socket.io将浏览器连接到我的应用程序。 <script type="text/javascript" src="http://localhost:4000/socket.io/socket.io.js"></script> <script> var socket = io.connect('http://localhost:4000'); </script> 用这个标准的方法一切正常。 现在我试图根据服务器的IP在“dynamic”中转换此连接,如下所示: <html> <head> var socket; function loadFile(filename){ var ip_server = location.host; var body = document.getElementsByTagName( 'body' )[0], fileref = document.createElement('script'); fileref.setAttribute("type","text/javascript"); fileref.setAttribute("src", "http://"+ip_server+"/"+filename); body.appendChild( fileref ); } </head> <body> <script type="text/javascript"> loadFile("socket.io/socket.io.js"); socket = io.connect('http://'+location.host); </script> </body> </html> 但是firebug说ReferenceError:io没有在socket = io.connect('http://'+location.host); 。 我该如何解决? 有一个简单的方法来做我在想什么? […]

Socket.io,安全和多人游戏

我目前正在制作一个在线游戏,我想知道Node.js和socket.io的安全性。 游戏的当前状态 我所有的 io.sockets.on('connection', function (socket) { socket.on('request', function (data) { }) }); 是安全的。 玩家可以发出任何请求(请求在这个例子中是指'请求')与任何数据(指数据),他们将不能利用它,即使他们手动修改他们发出的请求和数据并绕过客户端的基本安全。 他们也不能通过发送无效数据来使服务器崩溃。 注:我只有2发射:发射用户/通过login和发射input。 服务器虽然通过各种“发射”发送数据。 session()或GET / POST没有“通常”的概念。 在客户端,我专门使用 var socket = io.connect('http://something:3000'); socket.emit('request', data); 对于玩家需要获取代码+图片的静态资源,它看起来像: app.use(express.static(__dirname + '/public')); 对于数据库: client = mysql.createConnection({ host: 'localhost', user: 'root', password: 'something',}); client.connect(); client.query('USE dbname'); 最后是路由?,我显示相同的页面,不pipe请求: app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); }); […]

如何在同一个端口上使用node.js和php

我已经在端口12234上安装了node.js,socket.io和express.js,并且工作得非常好。 但是现在我想在该端口的一个页面上使用php(12234),但我不知道如何才能做到这一点。 有没有人有解决办法? 对不起我的英语不好,我是荷兰人,英语不太好。

Node.jsparsing路由的最小函数

我有一个Node.js / Express应用程序工作,接收路线如下所示: app.get('/resource/:res', someFunction); app.get('/foo/bar/:id', someOtherFunction); 这是伟大的,工作正常。 我也使用Socket.IO,并希望有一些服务器调用使用websockets而不是传统的RESTful调用。 但是,我想使它非常干净,几乎使用相同的语法,最好: app.sio.get('/resource/:res', someFunction); 这将给Socket.IO提供一个综合的“REST”接口,从程序员的angular度来看,他没有做任何不同的事情。 只需标记websockets: true从客户端是websockets: true的。 我可以处理所有的细节,如自定义的方式来传递请求动词和parsing它们等,我没有这个问题。 我正在寻找的唯一的东西是一些function,可以parsing路线,如快递,并正确地路由它们。 例如, // I don't know how to read the ':bar', 'foo/:bar' // Or handle all complex routings, such as 'foo/:bar/and/:so/on' 我可以深入挖掘并尝试自己编写代码,或者尝试读取所有明确的“源代码”,并find它们的位置,但我相信它本身存在。 只是不知道在哪里find它。 UPDATE robertklep提供了一个很好的答案,完全解决了这个问题。 我把它改编成一个完整的解决scheme,我在下面的答案中发布了。

socket.IO-为什么我的客户端html页面不能加载socket.io.js?

我的服务器结构很简单。 我有一个与我的应用程序相同的公共文件夹 app.js node_modules(folder) express(folder) socket.io(folder) public(folder) index.html js(folder) css(folder) 我的应用程序如下 var sys = require('sys'), express = require('express'), app = express.createServer('127.0.0.1'), io = require('socket.io'); app.use(express.static(__dirname + '/public')); app.get('/', function (req, res) { res.send('Hello World'); }); app.listen(3000); var socket = io.listen(app); socket.on('connection', function (client){ // new client is here! }); 而我的HTML页面(简体)是 <html> <p id="text">socket.io</p> <script src="/socket.io/socket.io.js"></script> […]