小编Mig*_*use的帖子

使用node或Express返回JSON的正确方法

因此,可以尝试获取以下JSON对象:

$ curl -i -X GET http://echo.jsontest.com/key/value/anotherKey/anotherValue
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Type: application/json; charset=ISO-8859-1
Date: Wed, 30 Oct 2013 22:19:10 GMT
Server: Google Frontend
Cache-Control: private
Alternate-Protocol: 80:quic,80:quic
Transfer-Encoding: chunked

{
   "anotherKey": "anotherValue",
   "key": "value"
}
$
Run Code Online (Sandbox Code Playgroud)

有没有办法在使用node或express的服务器的响应中生成完全相同的主体?显然,可以设置标头并指示响应的内容类型将是"application/json",但是有不同的方式来编写/发送对象.我经常使用的那个是使用以下形式的命令:

response.write(JSON.stringify(anObject));
Run Code Online (Sandbox Code Playgroud)

然而,这有两点可以说是好像是"问题":

  • 我们正在发送一个字符串.
  • 而且,最终没有新的线条特征.

另一个想法是使用命令:

response.send(anObject);
Run Code Online (Sandbox Code Playgroud)

这似乎是基于curl的输出发送一个JSON对象,类似于上面的第一个例子.但是,当在终端上再次使用卷曲时,在身体的末端没有新的线条字符.那么,如何使用node或node/express在最后附加一个新行字符来实际记下这样的内容?

json httpresponse node.js express

405
推荐指数
9
解决办法
64万
查看次数

节点上的客户端:未捕获的ReferenceError:未定义require

所以,我正在用node/express + jade combo编写一个应用程序.

我有client.js,在客户端加载.在该文件中,我有从其他JavaScript文件调用函数的代码.我的尝试是使用

var m = require('./messages');
Run Code Online (Sandbox Code Playgroud)

为了加载messages.js(就像我在服务器端一样)的内容,然后加载该文件的调用函数.但是,require没有在客户端定义,它会抛出窗体的错误Uncaught ReferenceError: require is not defined.

这些其他JS文件也在客户端的运行时加载,因为我将链接放在网页的标题上.因此,客户端知道从这些其他文件导出的所有函数.

如何从打开服务器套接字messages.js的主client.js文件中的其他JS文件(例如)中调用这些函数?

javascript sockets node.js express pug

277
推荐指数
5
解决办法
55万
查看次数

Homebrew:将对象添加到存储库数据库.git/objects的权限不足

有人可以提出以下决议吗?

使用git运行一些东西必须有一个简单的方法.

$ rm -rf /usr/local/Cellar /usr/local/.git && brew cleanup
$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)"
==> This script will install:
/usr/local/bin/brew
/usr/local/Library/...
/usr/local/share/man/man1/brew.1

Press ENTER to continue or any other key to abort
==> Downloading and installing Homebrew...
remote: Counting objects: 142460, done.
remote: Compressing objects: 100% (49574/49574), done.
remote: Total 142460 (delta 97359), reused 136688 (delta 91829)
Receiving objects: 100% (142460/142460), 33.23 MiB | 1.57 MiB/s, done.
Resolving deltas: 100% (97359/97359), done.
From https://github.com/mxcl/homebrew
 * [new branch]      master …
Run Code Online (Sandbox Code Playgroud)

git homebrew

7
推荐指数
1
解决办法
3527
查看次数

真实的跨平台分散式异步对等通信

我对网络编程的了解有限,因此,所有评论都非常受欢迎.基本上我的问题归结为以下问题:

Q1.是否存在分散的异步跨平台点对点通信

让我解释一下自己.

  • 如果我们在具有实际IP地址的计算机上运行两个http服务器,那么显然答案是肯定的,假设有人为交互编写协议.

  • 更进一步,如果它们中的一个(或两者)在路由器后面,那么,通过端口转发,仍然可以建立通信.然而,这里的问题开始是因为如果有人想在后台运行这样的服务器,比如说在手机中,依赖这个服务器的应用程序真的可以在家里工作时(我们真的不能指望请求端口转发)到处都是).

  • 但即便如此,

  • Q2.当有人不使用Wi-Fi时,移动电话是否从电信公司获得实际的IP地址?

  • 如果这是真的,那么显然可以通过在智能手机上运行http服务器而不使用Wi-Fi来实现跨平台的异步对等通信.(我知道这不方便,但肯定是可行的.)

最后,我能想到的两个(也许还有更多)相关问题是:

根据Skype的答案,它说:如果其中一个被叫方或两个都没有公共IP,那么它们会通过UDP或TCP将语音流量发送到另一个在线Skype节点. 因此,似乎Skype中没有直接通信,因为他们必须使用中间人进行这种情况.

关于Viber,我找不到这个特定问题的完整答案.人们通过Viber中央服务器互相交谈,还是建立直接连接?当然,如果他们确实建立了直接连接,那么我真的想知道他们如何管理这样的事情,因为手机可能有也可能没有物理地址.即使Viber没有运行而且我在路由器后面,Viber消息如何从我的朋友那里发送到我的手机?

我猜Viber的答案实际上是推送通知,但据我所知,推送通知的所有变体都依赖于开放连接,然后应用程序的服务器通过这样的连接将通知发送给客户端.所以,这种方法让我们觉得它是异步的,但实际上并非如此.我们在欺骗,因为与服务器之间存在持续开放的连接,此外,据我所知,应用程序服务器必须通过该服务器推送通知.示意图:

A>中央应用服务器>中央服务器w /打开连接到我的手机>我

所以,这似乎又是一种集中的方法.

老实说,我能想到的唯一方法是分散和异步(在移动电话上)是在每个平台/设备上运行http服务器,但这是以不使用Wi-Fi为代价而假设一家电信公司真的为每部手机分配一个物理IP地址(我不知道它是否属实,是吗?).

WASTE,暗网,F2F等怎么样?它们是否在某些相关方之间更直接的异步通信意义上提供了优势?是否存在使用此类通信方法的实际应用程序(也包括移动电话).

真的,这不是我想要解决的实际问题,但我想知道最先进的技术是什么,以便我可以弄清楚如何从那里开始.所以,所有评论都非常受欢迎.如果您有关于最新技术的参考资料我也想了解它们,但简短的描述也会很好.

我提前感谢你所有的时间和精力.

p2p asynchronous communication-protocol httpserver push-notification

6
推荐指数
1
解决办法
3408
查看次数

执行HEAD请求时curl不会返回

我正在节点服务器上创建资源并将ETag附加到每个资源上.我正在使用此问题中找到的方法我应该使用什么编码来在nodeJS中正确生成带加密的ETag?用于生成ETag.但是,当我HEAD使用curl在命令行上发出请求时,例如:

$ curl -i -u username:password -X HEAD http://localhost:3000/aResource/0
Run Code Online (Sandbox Code Playgroud)

答案是

HTTP/1.1 200 OK
X-Powered-By: Express
ETag: "1a37c148692f92ad6c97887f77c873e6"
Content-Type: text/plain
Date: Sat, 26 Oct 2013 01:06:28 GMT
Connection: keep-alive

^C
$
Run Code Online (Sandbox Code Playgroud)

我必须特意按下Control-C才能再次看到命令提示符.另一方面,我发现这很奇怪,因为我处理HEAD请求的方式是通过app.head在节点上,在验证后我调用函数:

function serveResourceEtag(req, res) {
    console.log("Following route through HEAD");
    var anID    = parseInt(req.params[resourceID], "utf8");
    if (anID < serverData.resourceEtags.length) {
        res.writeHead (200, {"ETag": "\"" + serverData.resourceEtags[anID] + "\"", "Content-Type": "text/plain"});
        res.end();
    }
    else {
        res.writeHead (404, {"Content-Type": "text/plain"});
        res.end();
    }
};
Run Code Online (Sandbox Code Playgroud)

换句话说,即使我有res.end(); 命令到底,由于某种原因传输还没有停止.据我所知, …

etag curl node.js

6
推荐指数
1
解决办法
4048
查看次数

测量node.js http请求的时间

我想知道我们是否可以使用node.js来衡量完成http请求所需的时间.从文档(这里)稍微修改一个例子,可以很容易地写下以下代码.

var http = require('http');
var stamp1 = new Date();
var stamp2, stamp3, stamp4;
var options = {
  hostname: 'www.google.com',
  port: 80,
  path: '/upload',
  method: 'POST'
};

var req = http.request(options, function(res) {
  stamp3 = new Date();
  console.log('STATUS: ' + res.statusCode);
  console.log('HEADERS: ' + JSON.stringify(res.headers));
  res.setEncoding('utf8');
  res.on('data', function (chunk) {
    console.log('BODY: ' + chunk);
  });
  res.on('end', function () {
    stamp4 = new Date();
    console.log ("Stamp 3: " + stamp3);
    console.log ("Stamp 4: " + stamp4);
  });
});
req.on('error', …
Run Code Online (Sandbox Code Playgroud)

javascript timing node.js http-request

6
推荐指数
1
解决办法
6815
查看次数

根据ISOCountryCode获取货币符号和货币代码

在本地化方面,像我这样的新手也有类似的问题,但我找不到一个可以解决这个问题的问题.

这是我的问题.我们可以在NSArray中获取所有ISO国家/地区代码,并附上表单声明[NSLocale ISOCountryCodes].现在,对于我想要打印当地货币以及该国家使用的货币代码的每个国家/地区.这样做的恰当方法是什么?

我做了下面的工作,因为我得到美国美国形式的行:(null)((null))而我希望获得美国美国形式的行:$(USD):

myCountryCode = [[NSLocale ISOCountryCodes] objectAtIndex:row];
appLocale = [[NSLocale alloc] initWithLocaleIdentifier: @"en_US"];
identifier = [NSLocale localeIdentifierFromComponents: [NSDictionary
                      dictionaryWithObject: myCountryCode 
                                    forKey: NSLocaleCountryCode]];
myDictionary = [NSLocale componentsFromLocaleIdentifier: identifier];
myCountryName = [appLocale displayNameForKey:NSLocaleCountryCode 
                                       value:[myDictionary
                                             objectForKey:NSLocaleCountryCode]];
localCurrencySymbol = [appLocale displayNameForKey:NSLocaleCurrencySymbol
                      value:[myDictionary objectForKey:NSLocaleCurrencySymbol]];
currencyCode = [appLocale displayNameForKey:NSLocaleCurrencyCode 
                value: [myDictionary objectForKey:NSLocaleCurrencyCode]];
title = [NSString stringWithFormat:@"%@ %@: %@ (%@)", myCountryCode, myCountryName, localCurrencySymbol, currencyCode];
[appLocale release];
Run Code Online (Sandbox Code Playgroud)

(上面的标识符,myCountryCode,myCountryName,localCurrencySymbol,currencyCode和title都是NSString指针.而且myDictionary是一个NSDictionary指针,appLocale是一个NSLocale指针).基本上上面的代码将在pickerview中,我想在运行中生成每一行的标题.

非常感谢您的宝贵时间.基本上问题是,一旦我们拥有ISO国家/地区代码,我们如何打印(在应用程序区域设置中)该特定国家/地区的货币符号和货币代码.

iso objective-c ios

5
推荐指数
3
解决办法
1万
查看次数

在node.js中将参数传递给async.parallel

我试图创建一个最小的例子,我可以完成上面描述的内容.为此,这是我尝试一个最小的例子,最后我想在输出中看到

负1是-1

加2中的一个是3

这是我的代码.

var async = require('async');
var i, args = [1, 2];
var names = ["negative", "plusOne"];

var funcArray = [
    function negative(number, callback) {
        var neg = 0 - number;
        console.log("negative of " + number + " is " + neg);
        callback(null, neg);
    },
    function plusOne(number, callback) {
        setTimeout(function(number, callback) {
            var onemore = number + 1
            console.log("plus one of " + number + " is " + onemore);
            callback(null, onemore);
        }, 3000);
    }];

var funcCalls = …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous node.js

5
推荐指数
1
解决办法
5310
查看次数

带有jquery属性的动态按钮

好吧,我可以生成一个包含表单代码的按钮

var temp = "<button type=\"button\" class=\"dynBtn\" id=\"anID\">Here!</button>";
$('#myDiv').append(temp).click(function(){
    window.alert("Hello! My id is " + this.id);
});
Run Code Online (Sandbox Code Playgroud)

然后在运行时这并没有真正起作用,因为我得到了id作为"myDiv"的答案.另一方面,我也尝试使用这样的东西:

$('#myDiv').append(temp).click(dynButtonClicked(this));
Run Code Online (Sandbox Code Playgroud)

其中dynButtonClicked分别定义为

function dynButtonClicked (aButton) {
    window.alert("Hey, my id is " + aButton.id);    
};
Run Code Online (Sandbox Code Playgroud)

但是,通过这种方式,在页面加载时点击按钮,id为'undefined',而且,无论我点击按钮多少次,我都没有得到进一步的警报(除了我在页面加载时获得的警报) ).那么,我该怎么做呢?

我想理想情况下我想为运行时生成的所有按钮的类命名,然后点击其中的任何按钮来处理它们的某个位置.

$(document).ready(...)
Run Code Online (Sandbox Code Playgroud)

功能.但请,请继续告诉我你的想法.事实上,稍后,通过交互,我可能想要删除按钮或禁用它们.所以,我正在寻找一些强大的东西.提前谢谢您的时间.

javascript jquery

1
推荐指数
1
解决办法
2734
查看次数

express 和 jade:循环并创建动态 ID

好的,这应该是一个关于节点的简单问题。

使用 express,一个文档有一个叫做 app.js,另一个是 index.jade,还有一个 index.js,通常还有另一个 javascript,比如 server.js,服务器的大部分工作都在这里完成(这里的代码可以在 app.js 中,但假设这些是不同的文件)。

说我有两个这样的对象

myIDs   = ['afoo', 'abar'];
myArray = ['foo', 'bar'];
Run Code Online (Sandbox Code Playgroud)

在 server.js 中,我想遍历它们在 jade 中的元素,并创建分别具有值 foo 和 bar 并且它们的 id 分别为 afoo 和 abar 的按钮。我们怎么能做这样的事情?

此外,是否可以意识到这些按钮之一是否发生了鼠标单击?我试图通过使用这样的东西为我动态创建的特定按钮命名

html = "<button id=\"aUniqueID\">Press me!</button>"
document.getElementById('puff').innerHTML = html;
Run Code Online (Sandbox Code Playgroud)

但是,即使它出现在浏览器中,按下按钮时也没有任何反应(我正在向服务器发送消息,服务器应该打印控制台日志)。

任何帮助,将不胜感激。

javascript jquery node.js express pug

0
推荐指数
1
解决办法
1575
查看次数