Tag: socket.io

在node.js中如何获取当前模块中其他模块函数的结果?

我需要其他模块function的结果在我目前的module.How我可以做到这一点。 module1.js var module2=require('./lib/module2'); module2.getValue(); 现在我想在getValue方法中返回'true'。如何才能到达这里。 在其他语言下面的代码将工作 var result=module2.getValue(); 但是在node.js中,我们必须使用callback方法来获取这个值。我该怎么做。 module2.js exports.getValue=function(){ console.log('getValue method called.'); return true; }; 最后,我改变了我的module1代码,但我没有得到这个结果为true.Below是我更新的module1代码 var module2=require('./lib/module2'); module2.getValue(); 以下是我的确切代码 server.js var express = require('express') , http = require('http'); var app = express(); app.configure(function(){ app.use(express.static(__dirname + '/public')); }); var server = http.createServer(app); var io = require('socket.io').listen(server); server.listen(8000); var cradle=require('cradle'); new(cradle.Connection)('https://mydomain.iriscouch.com/', 5984, { […]

nodejs和socket.io与lua服务器开发

需要一些关于使用lua编写代码和nodejs&socket.io构build服务器的build议。 我听说lua更快,所以我想在lua写服务器。 和socket.io的websockets。 在我的基本思想中,luvit,nodelua等是nodejs的lua模块。 现在我需要知道哪个模块最适合用lua,nodejs和socket.io构build服务器? 记得我会用mongodb来存储数据。 build议我一个合适的模块! 提前致谢。

xcode中的cocos2d通过名为socket.io的objective-C库与一个node.js服务器服务通信

我使用xcode 4.6.1 cocos2d 2.x,ios sdk 6.1,iphone 6.1模拟器。 我想用socket.io通过node.js从objective-c到服务器进行通信。 所以,我尝试了一个名为socket.io的objective-c库“socket.IO-objc” https://github.com/pkyeck/socket.IO-objc 我在socket.IO-objc中成功地使用了一个“SocketTesterARC”的例子来与服务器“socket.io中的node.js”进行通信。 SocketTesterARC: (void) viewDidLoad { [super viewDidLoad]; socketIO = [[SocketIO alloc] initWithDelegate:self]; [socketIO connectToHost:@"localhost" onPort:8888]; [socketIO sendEvent:@"join" withData:@"first room"]; [socketIO sendMessage:@"hihihi"]; } 所以,我将“socket.io”库应用于新的cocos2d项目。 我从例子“SocketTesterARC”的代码复制到新的cocos2d项目。 但是,错误和不处理! Connecting to socket with URL: http://localhost:8888/socket.io/1/?t=16807 2013-04-06 21:26:35.129 cocos2dSocketioTest[4311:c07] send() 2013-04-06 21:26:35.130 cocos2dSocketioTest[4311:c07] queue >>> 5:::{"args":["first room"],"name":"join"} 2013-04-06 21:26:35.131 cocos2dSocketioTest[4311:c07] […]

Node.JS通过Socket.IO发送错误的数据

我使用Node.JS和Socket.IO来交易数据。 我有以下“架构”: 一个“本地”Socket.IO服务器,它具有10秒的setInterval,在每次迭代中广播不同的数据。 一个“全局”的Socket.IO服务器,根据来自HTML客户端的请求,从“本地”服务器接收数据(以下代码中的ioLocalvariables是一个socket.io-客户端),用通过的数字修改数据HTML客户端请求并发送给客户端。 问题是HTML客户端收到错误的数据。 想象一下,对于时间戳,本地服务器广播消息“2”。 同时,两个不同的HTML客户端请求数据,第一个用“2”,第二个用“3”。 期望的是第一个接收“4”(2 * 2),第二个接收“6”(2 * 3),但是不工作。 相反,第一个接收“4”,第二个接收“12”(4 * 3)。 如果我有第三个客户端发送“2”,它会收到“24”(12 * 2)。 我试图为每个客户端创build一个不同的var,使用socket.set和socket.get,一个socket.id的数组,但是这些解决scheme都没有工作。 这有什么问题? 这是范围问题吗? 谢谢你的时间。 “全球”服务器 var ioGlobal = require('socket.io').listen(9090); ioGlobal.set('log level', 1); ioGlobal.enable('browser client minification'); // send minified client ioGlobal.enable('browser client etag'); // apply etag caching logic based on version number ioGlobal.enable('browser client gzip'); // gzip the […]

Socket.io不从客户端发送数据到服务器

我似乎有一个使用socket.io从客户端到服务器的通信问题。 首先,我发送的JSON对象 loginInfo = { email: 'username', password: 'password' } 在客户端我有: socket.emit('user:login', loginInfo); 然后在服务器端,我有 socket.on('user:login', function(loginInfo) { console.log('data being sent is:\n' + loginInfo); }); 这将在控制台中打印出来: data being sent is: function ack() { self.log.debug('sending data ack packet'); socket.packet({ type: 'ack' , args: util.toArray(arguments) , ackId: packet.id }); } 同样如果我这样做 socket.on('user:login', function(loginInfo) { console.log('data being sent is:\n' […]

socket.io – 服务器上的callback()不执行

我刚开始使用socket.io.js,并试图在我向客户端发送消息时立即在服务器上执行一个函数。 我的代码如下, 服务器: server.on('connection', onConnect); var id = 0; function onConnect(socket) { socket.emit('myMsg', {id: ++id}, function () {console.log('id callback on server');}); } 客户: iosocket.on('myMsg', function(data, callback) { console.log('id:', data.id, callback); }); 不过,我看到callback函数在客户端显示为“未定义”。 从我阅读的文档中,我认为这应该工作( https://github.com/LearnBoost/Socket.IO/wiki/Migrating-0.6-to-0.7+ ),所以有人请让我知道我在做什么这里错了吗?

正确使用socket.io事件的callback

我正在阅读关于socket.io的事件和callback如何工作的有趣的介绍性文章 。 我决定先尝试一下如下的东西。 第一次尝试 server.js // client is the socket for the client client.on('foo' , function(callback){ callback("Hello world"); }); client.js // server is the socket for the server server.emit('foo', function(msg){ alert(msg); }); 那么,恰巧它实际上不起作用(服务器抛出一个exception,告诉callback不是一个函数)。 试图解决这个问题,我发现这个答案解释了如何以正确的方式做到这一点。 那么,也没有工作。 一些修改,我得到这个… 第二次尝试 server.js // client is the socket for the client client.on('foo' , function(name, callback){ callback("Hello world"); }); client.js // […]

使用nodeJS的自定义path代理WebSockets和HTTP到单独的NodeJS应用程序?

CONTEXT 我正在尝试在NodeJS中构build一个新的Web应用程序。 这个webapp使用两个主要组件。 1)我在NodeJS中编写的代码 – 也就是我自己的逻辑stream程。 2)第三方开源NodeJS应用程序 – EtherCalc – 同时使用HTTP和Socket.io EtherCalc是一个完全独立的Web应用程序。 这是一个电子表格在浏览器+服务器,旨在作为一个独立的应用程序使用。 重要的是,它有自己的命名空间(就像它有不同的path名称,可以路由到不同的function)。 我的应用程序和EtherCalc各自运行在彼此独立的端口上。 为了简单起见,让域名为localhost 。 挑战我想要解决 我的应用程序将使用EtherCalc的电子表格function,以及我自己的代码的非电子表格相关的逻辑stream程。 用户将有权访问这两个接口。 不过,我想这一切似乎来自一个URL /端口 – 我不希望非程序员指定不同的端口来访问不同的function。 解决这个问题的最简单的方法是在我的应用程序中为EtherCalc创build一个名称空间。 以/ethercalc/自动开始的任何path将被转发到运行EtherCalc的端口(在转发之前, ethercalc/从请求URL中删除)。 任何不以标准服务器逻辑stream程开始的东西。 我使用node-http-proxy来实现这一点,使用下面的代码: proxy.proxyRequest(req,res,{ host:'localhost', port:8000 }); 我遇到了问题 这似乎最初运行良好 – 电子表格界面加载时,我去任何/ethercalc/url。 但是,EtherCalc使用WebSockets或JSON轮询来保持服务器和浏览器在同一页面上。 这似乎没有正常工作。 出于某种原因,实际上需要10秒钟才能完成连接。 如果我在电子表格上工作,然后再加载它,这是特别有问题的 – 在我实际看到事先放入的数据之前,有10秒的窗口。 有这个问题之后,要删除url更改function。 现在我的应用程序只是将请求转发到EtherCalc正在运行的端口。 但是,问题依然存在。 直接连接到EtherCalc所在的端口可以解决问题。 重写代码来使用node-http-proxy的httpProxy.createServer()代码也没有什么区别 – 完全相同的结果… 奇怪的是,当连接到我的应用程序端口(具有代理/转发系统的应用程序端口)之后,在漫长的等待期之后,它的function就很好 – 所有事情都是实时同步的。 有谁知道这是怎么回事? TL; […]

socket.io – iPad总是得到一个超时,虽然它连接

我有一个简单的聊天应用程序与node.js和socket.io: 教程完整的代码 如果客户从PC上进入网站,它是完美的。 如果客户端使用IPad(ios 5.1 /最新版本的Chrome / Safari),则只能使用。 大多数情况下,网页被加载,然后iPad连接,但服务器closures连接需要很长时间。 然后iPad得到一个新的连接,但不能真正初始化会话。 它会定期断开连接并尝试重新连接。 这里socket.io的protocoll: 客户代码: socket = io.connect(http://42.58.240.427:4000); socket.on('connect', function(){ send('init'); }); 服务器代码: io.sockets.on('connection', function (socket) { socket.on('init', function(){ console.log("Good morning new User"); }); socket.on('disconnect', function(){ requesthandler['disconnect'](socket, io); });

只有websocket和xhr使用socket.io和nginx代理传递

我有一个问题,可能会或可能不会有关nginx代理传递。 socket.io在端口7022上,但nginxpipe理端口80上的所有请求。对于socket.io来说非常好用,而且对xhr至less有一半好处。 我从来没有得到flashsocket或html文件的工作。 也许不是杰森普。 我说这可能与nginx中的代理有关,因为在socket.io代理替代变得在nginx中可用之前的几个月,我确实删除了flashsocket。 我经常在论坛上看到socket.io只是起作用。 “我从来没有改变任何东西在服务器上”“你不应该需要太… socket.io这一切都为你…只是把它保持原样。 我的交通工具到了 io.set('transports', ['websocket','xhr-polling','jsonp-polling']); 而下面是推荐的: io.set('transports', [ 'websocket' ,'flashsocket' ,'htmlfile' ,'xhr-polling' ,'jsonp-polling' ]); 这是我的nginx代理configuration location /socket.io { proxy_pass http://localhost:7022; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } 我的nginx服务器也服务于一些静态HTML以及与FastCGI服务器监听127.0.0.1:9000 额外的nginx设置 server { listen 80; #server blah blah client_max_body_size 100M; client_body_buffer_size 5M; location / { try_files […]