Tag: socket.io

可能的范围界定问题

一个可能的node.js / backbone.js / socket.io范围问题我不能包裹我的头。 (片段) server.js var app = express(); var server = http.createServer(app); io = io.listen(server); (摘录自 index.html) <script type="text/javascript" src="/socket.io/socket.io.js"></script> <script> var socket = io.connect(window.location.origin); </script> (摘录自) js / views / map.js (function() { // self invoking anonymous function so we are able to // create the private variable "map" that can […]

数据库查询node.js(PHP风格)

我终于明白了websockets的概念。 我在这里find了很棒的问答,非常感谢。 我将要安装node.js以及apache和geoserver作为web-mapping项目,我将使用node.js来处理websocket。 实际上,在编码方面,我对php有更多的经验,并且很难将我的逻辑从传统的xml-http请求中转移出来,但我会给它一个机会。 一些问题,在我挖掘之前。我使用postgreSQL / postGIS,如何执行从node.js到postgreSQL / postGIS的数据库查询? 我习惯于像下面这样的传统的PHP查询 $stmt = $dbh->prepare("SELECT pins.p_name FROM pins WHERE type.t_id=pins.p_type AND AND p_id = :nm"); $stmt->bindParam(':nm', $nm, PDO::PARAM_STR); $nm=$jas; $data=array('nm'=>$nm); $stmt->execute($data); //blah blah //(I always use PDO and prepared statements) 大多数教程都谈论聊天应用程序,但是关于查询和与postgreSQL / postGIS沟通呢? 在node.js / socket.io中可以吗? 任何提示/教程? 我想执行查询,收集结果,把一些html标签,然后推回到客户端,在一个特定的股利。 另外,是node.js现在在Windows 7上工作,没有问题? 在过去它没有,但我想现在它,因为他们有一个MSI安装程序。 对? 非常感谢你…

websockets和iOS中的实时更新

我正在学习express.js和socket.io来制作实时的Web应用程序。 从我可以收集的,socket.io(和websockets)在浏览器中可用。 所以它可以监听服务器发出的事件。 对于我的用例,客户端是一个iOS应用程序而不是浏览器,我打算使用express + socket作为实时api,将更新推送到客户端。 由于iOS没有websockets,我该怎么做呢? 人们目前如何将更新推送到这些设备?

无法访问socket.html

我想模拟客户端 – 服务器节点。 这是我的server.js var http = require("http"); var url = require('url'); var fs = require('fs'); var server = http.createServer(function(request, response){ console.log('Connection'); var path = url.parse(request.url).pathname; switch(path){ case '/': response.writeHead(200, {'Content-Type': 'text/html'}); response.write('hello world'); break; case '/socket.html': fs.readFile(__dirname + path, function(error, data){ /* if (error){ response.writeHead(404); response.write("opps this doesn't exist – 404 1"); } */ […]

Express JS和SocketIO使用

对不起,我在这里问一下如何使用express js和socket io。 我对这种技术真的很陌生。 第一个问题是,是否真的有必要为每个项目安装快递? 我的意思是,当我要创build一个新的项目时,我创build一个新的文件夹,我应该运行一个新的命令提示符,指向该目录并安装express? 如果是这样,请告诉我离线做? 因为有时候我无法连接到互联网。 第二个问题是,如果我使用express JS,我应该将客户端文件(如html / javascript(前端))放在与服务器文件相同的目录中吗? 我怎样才能从外部来源,如github运行示例快递项目? 第三个问题是,我看了很多关于express JS + SocketIO的教程。 这两件事情是框架,对吗? 我怎样才能在一个项目/文件夹中一起使用它们? 非常感谢,如果你们帮忙,非常感谢,谢谢:)

Socket.io多次触发callback函数

我正在使用node.js和socket.io工作在一个多人游戏canvas游戏中,并且在客户端握手build立后,我的节点服务器立即抛出大量相同的错误。 这是从控制台复制/粘贴: info – handshake authorized GeDlfwyEdfEIJXGvoZjG new player connected: GeDlfwyEdfEIJXGvoZjG 22:3:26 – (onMovePlayer) Player not found: GeDlfwyEdfEIJXGvoZjG 22:3:26 – (onMovePlayer) Player not found: GeDlfwyEdfEIJXGvoZjG 22:3:26 – (onMovePlayer) Player not found: GeDlfwyEdfEIJXGvoZjG 22:3:26 – (onMovePlayer) Player not found: GeDlfwyEdfEIJXGvoZjG 22:3:26 – (onMovePlayer) Player not found: GeDlfwyEdfEIJXGvoZjG 22:3:26 – (onMovePlayer) Player not found: GeDlfwyEdfEIJXGvoZjG 22:3:26 – […]

NodeJS + MongoDB ASYNC结果出现较晚

我有一个简单的函数,它返回一个通道中的连接用户列表,我在初始阶段用一个简单的数组来使用它,但是知道,我想从mongodb数据库中检索一些用户细节,并将其添加到该数组中。 我遇到的问题是返回给出了一个空的结果,我可以在控制台日志中清楚地看到,这是因为查询运行较晚,并且在返回结果之前运行返回。 我知道这是因为asynchronousfunction,我已经尝试与Q和其他人,但我只是简直不能得到它的工作。 🙁 //GET USERS FOR SPECIFIED ROOM function get_room_users( room ){ // create an array to hold all the usernames of the poeple in a specific room var roomusers = new Array(); // get all the clients in 'room1′ var clients = io.sockets.clients( room ); var i = 0; for(var i = 0; […]

NodeJs:如何处理大量的定时器?

我正在使用socket.io通过websockets发送数据包。 他们似乎不时消失。 所以我必须实施某种确认制度。 我的想法是立即回应一个ACK包的数据包。 如果服务器在给定的时间内没有收到ACK包,他将重新发送(最多3次,然后断开套接字)。 我的第一个想法是发送一个包后启动一个定时器(setTimeout)。 如果发生超时事件,则必须重新发送数据包。 如果ACK将到达,超时将被删除。 非常简单和简短。 var io = require('socket.io').listen(80); // … connection handling … function sendData(someData, socket) { // TODO: Some kind of counter to stop after 3 tries. socket.emit("someEvent", someData); var timeout = setTimeout(function(){ sendData(someData, socket); }, 2000); socket.on("ack", function(){ // Everything went ok. clearTimeout(timeout); }); } 但是我会有1k-3k的客户端连接很多的stream量。 我无法想象,同时运行的10k个定时器可以被NodeJS使用。 更糟糕的是,我读到NodeJS不会在没有时间的情况下触发事件。 […]

2小时不活动后,Socket.io会自动断开连接

我想在2小时不活动的情况下断开用户与socket.io的连接,并给他们提示/重新连接button。 首先,我已经设置了自动重新连接为false和variablesforcedc: var socket = io.connect('https://coinchat.org:443',{secure: true, reconnect: false}); var forcedc = false; 接下来,我有一个不活动的时间,有人移动鼠标时重置: $("body").mousemove(function(e){ clearTimeout(dcTimeout); dcTimeout = setTimeout(function(){ if(!forcedc){ forcedc = true; socket.disconnect(); $("#dcmodal").modal('show'); } }, 1000 * 60 * 60 * 2); }); 基本上,forcedc意味着用户由于不活动而被断开,并且浏览器不应该刷新页面来尝试重新连接。 如果forcedc为false,则意味着用户由于networking问题/服务器重新启动而断开连接,浏览器应刷新页面以重新连接。 现在,当套接字断开时: socket.on("disconnect", function(data){ if(!forcedc){ setTimeout(function(){document.location.reload(true)}, 1000 + Math.random()*12750); } }); 如果forcedc为false,页面应该刷新。 但是,即使用户由于不活动而已经“断开连接”,页面也会刷新(我知道forcedc = true已经被执行,因为我看到了断开的模式)。 我究竟做错了什么?

Socket.io – 从服务器logging值的最简单的方法

当您使用socket.io在服务器(server.js)文件上testing您的JavaScript时,不能使用console.log()或alert()。 为testing目的logging或提醒一个值最简单的方法是什么?