我刚刚进入backbone.js,我发现进展有点慢.我的主要问题是如何使用socket-io保持我的客户端和服务器端模型同步(技术上我现在使用now.js但应该应用相同的主体).
我认为最好的方法是覆盖同步方法,但是一些简单的建议会非常受欢迎.
unknown406c8f2d5ecb:proves airrider3$ node tronServer.js
[Error: dlopen(/Users/airrider3/Documents/proves/node_modules/now/node_modules/node-proxy/build/Release/nodeproxy.node, 1): no suitable image found. Did find:
/Users/airrider3/Documents/proves/node_modules/now/node_modules/node-proxy/build/Release/nodeproxy.node: unknown file type, first eight bytes: 0x7F 0x45 0x4C 0x46 0x02 0x01 0x01 0x00]
Error: dlopen(/Users/airrider3/Documents/proves/node_modules/now/node_modules/node-proxy/build/Release/nodeproxy.node, 1): no suitable image found. Did find:
/Users/airrider3/Documents/proves/node_modules/now/node_modules/node-proxy/build/Release/nodeproxy.node: unknown file type, first eight bytes: 0x7F 0x45 0x4C 0x46 0x02 0x01 0x01 0x00
at Object.Module._extensions..node (module.js:485:11)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at Object.<anonymous> (/Users/airrider3/Documents/proves/node_modules/now/node_modules/node-proxy/lib/node-proxy.js:1:90)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at …Run Code Online (Sandbox Code Playgroud) 我正在使用nowjs和node_redis.我想创造一些非常简单的东西.但到目前为止,该教程让我空白,因为他们只执行console.log().
//REDIS
var redis = require("redis"),
client = redis.createClient();
client.on("error", function (err) {
console.log("Error "+ err);
});
client.set("card", "apple");
everyone.now.signalShowRedisCard = function() {
nowjs.getGroup(this.now.room).now.receiveShowRedisCard(client.get("card").toString());
}
Run Code Online (Sandbox Code Playgroud)
在我的客户方:
now.receiveShowRedisCard = function(card_id) {
alert("redis card: "+card_id);
}
Run Code Online (Sandbox Code Playgroud)
警报只给出"真实" - 我期望获得"苹果"关键"卡"的价值.
有任何想法吗?
在开始编写我的应用程序之前,我需要知道当单个node.js实例(express和(socket.io或nowjs))不再足够时该怎么做.
你现在可能告诉我,我不应该关心规模直到时间,但我不想开发应用程序并遇到麻烦,因为你不能轻易地在多个实例中扩展socket.io或nowjs.
我最近读到socket.io现在支持使用Redis进行扩展的方法(我也没有经验).Nowjs是基于socket.io构建的 - 它的工作方式是否相同?在nowjs.org上,您可以读到"NowJS的分布式版本"正在开发中,并且需要花钱.
当我在端口8080上启动服务器时,它不会给我一个错误,但是当我尝试浏览http://localhost:8080/nowjs/now.js服务器时会引发错误:
[RangeError: Maximum call stack size exceeded]
undefined
我尝试使用socket.io,它运行良好.
如果我像这样运行我的expressjs应用程序:coffee server.coffee并导航到localhost:8080,一切正常.
但是,当我使用以下配置使用nginx反向代理8080时:
server {
listen 0.0.0.0:80;
server_name localhost;
access_log /var/log/nginx/nodetest.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://node/;
proxy_redirect off;
}
}
upstream node {
server 127.0.0.1:8080;
}
Run Code Online (Sandbox Code Playgroud)
我在Chrome开发者控制台中收到以下错误:
GET http://184.73.217.204/socket.io/xhr-polling//1300750540040 502 (Bad Gateway)
以及nginx中的以下内容 error.log
2011/03/22 13:07:59 [error] 10269#0: *18 upstream prematurely closed connection while
reading response header from upstream, client: 168.229.58.68, server: localhost,
request: "GET /socket.io/xhr-polling//1300799281533 HTTP/1.1", upstream:
"http://127.0.0.1:8080/socket.io/xhr-polling/1300799281533", host: "184.73.217.204",
referrer: "http://184.73.217.204/"
Run Code Online (Sandbox Code Playgroud)
任何指导赞赏!
我正试图在每个人的pocket现状中提供功能.我想_.extend通过每个人的口袋这样做,即everyone.now.由于某些我无法理解的原因,_.extend无法在客户端正确提供功能.
这是我目前的代码:
var _ = require("underscore"),
everyone = require("nowjs").initialize(app);
everyone.now.foo = function() {};
_.extend(everyone.now, {
bar: function() {}
});
console.log(everyone.now.foo); // [Function]
console.log(everyone.now.bar); // undefined
Run Code Online (Sandbox Code Playgroud)
在服务器端和客户端,我都可以做得now.foo()很好.另一方面,now.bar()失败因为now.bar没有定义.客户端和服务器端都是这种情况.我试图在服务器端检查是否存在,如上一行所示.但是,此行记录undefined.
Underscore的extend功能(显然)对其他对象起作用,所以我猜它与现在使用的"魔术命名空间"有关.
如何扩展不起作用,everyone.now我怎样才能使它工作?
编辑2:我在代理中挖掘了更多.看起来像通过传递变量在代理上设置属性,因为它的名称不起作用.我删除了我的第一个编辑,因为这个测试用例更加狭窄.
为什么这不起作用?这是一个错误吗?(大多数时候我自己问这个问题我知道不是,但这真的让我无能为力......)
var proxy = Proxy.create({
get: function(pr, name) {
console.log("get called");
return null;
},
set: function(pr, name, value) {
console.log("set called");
}
});
var key = "foo";
proxy["foo"] = "bar"; …Run Code Online (Sandbox Code Playgroud) javascript node.js underscore.js nowjs-sockets ecmascript-harmony
当我启动服务器时,出现以下错误
[Error: Unable to load shared library /home/boopathi/node_modules/now/node_modules/node- proxy/lib/node-proxy.node]
Error: Unable to load shared library /home/boopathi/node_modules/now/node_modules/node-proxy/lib/node-proxy.node
at Object..node (module.js:465:11)
at Module.load (module.js:353:31)
at Function._load (module.js:310:12)
at Module.require (module.js:359:17)
at require (module.js:370:17)
at Object.<anonymous> (/home/boopathi/node_modules/now/lib/proxy.js:10:13)
at Module._compile (module.js:434:26)
at Object..js (module.js:452:10)
at Module.load (module.js:353:31)
at Function._load (module.js:310:12)
Run Code Online (Sandbox Code Playgroud)
当我手动创建节点代理模块时,我收到以下警告..
[2/2] cxx_link: build/Release/node-proxy_1.o -> build/Release/node-proxy.node
Run Code Online (Sandbox Code Playgroud)
黄色...
现在我无法加载/nowjs/now.js文件
我试过--harmony_proxies ..但它没有帮助..
我一直在使用socket.io和node.js并遇到了Nowjs,它似乎只是包装了socket.io并提供了一个更加用户友好的界面.
一旦我注意到Socket.io有时会出现连接延迟,特别是在IE和Firefox中,它有时需要2-4秒才能建立"连接".
有没有人知道使用Nowjs vs. Socket.io独自存在任何性能优势或额外好处?
nowjs-sockets ×10
node.js ×9
javascript ×6
socket.io ×3
backbone.js ×1
dnode ×1
express ×1
macos ×1
nginx ×1
redis ×1
webserver ×1
websocket ×1