小编cra*_*ish的帖子

如何使用websockets连接两个node.js服务器?

这是我的问题:

我有服务器A,运行node.js并使用socket.io与客户端(Web浏览器)进行通信.这一切都运行良好和花花公子.

但是,既然我有服务器B,它也需要通过websockets连接到服务器A,我已经碰壁了.我发现的node.js websocket客户端都不能与服务器A上的socket.io一起使用.

所以,这是我正在努力的情况:

.--------.      .----------.      .----------.
| CLIENT | <--> | SERVER A | <--> | SERVER B |
'--------'      '----------'      '----------'
Run Code Online (Sandbox Code Playgroud)

客户端 - 服务器连接通过socket.io完成

现在,服务器B(运行node.js)应该通过websocket连接到服务器A(以便通过端口80).但...

甚至socket.io-client模块中的示例代码也不起作用......:/

// Connect to server
var socket = new io.Socket('localhost', {port: 8080});
socket.connect();

// Add a connect listener
socket.on('connect', function(socket) { 
    console.log('Connected.');
});
Run Code Online (Sandbox Code Playgroud)

代码只传递没有任何错误,几秒钟后执行结束.

更新:代码示例

服务器(工作得很好)看起来像这样:

// Load requirements
var http = require('http'),
    io = require('socket.io');

// Create server & socket
var server = http.createServer(function(req, res){

    // Send HTML headers and message …
Run Code Online (Sandbox Code Playgroud)

node.js socket.io

57
推荐指数
3
解决办法
4万
查看次数

如何安全地进行跨域身份验证?

所以.我有域A.com,其用户身份验证在域B.com完成.目前我设置了这样,以便登录表单发布到B.com,如果成功,则设置会话cookie并激活重定向到Aloglogged.但是,当表单发布到B.com并且cookie设置为该域时,当我从A.com执行JSON请求时,会话cookie不可用,我不知道他们是否登录.那么问题就变成了,如何解决这个问题呢?

我一直在考虑一个解决方案,其中我会向重定向uri添加一个令牌,然后可以用A.com进行一次身份验证会话创建(浏览器可以使用该令牌来验证与B.com的会话,这样cookie就可以设置为A.com,并且可以在JSON请求中使用.之后令牌将被无效.c).

但是,我不确定这个解决方案有多安全?或者还有其他更安全的解决方案吗?

security authentication session

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

当hashchange发生时,IE不会触发popstate

我有使用history API和push/popstate在客户端进行路由的页面.这适用于所有现代浏览器.(node.js prerenderer将支持搜索引擎)

但是,我最近碰到了一个问题,IE不会在hashchange上激活popstate,而pushstate与url的工作正常,包括IE11.

例如,像这样......

$(document).on('click', 'a', function(e) {
    e.preventDefault();
    History.pushState({}, '', $(this).attr('href'));
});
Run Code Online (Sandbox Code Playgroud)

...正确地发射......

$(window).on('popstate', function() {
    console.log('url changed');
});
Run Code Online (Sandbox Code Playgroud)

根据W3C规范,hashchange应该触发popstate,因为它正在改变当前的历史记录.但是,当我添加哈希链接(<a href="#hashchange">...),在IE上单击它时,什么都没有激发.:/

我不想做IE检测(因为现在有很多浏览器可能会陷入同样的​​厄运),而不是使用特征检测.但是,由于历史(popstate/pushstate)在其余部分工作得很好,我甚至无法检测到丢失的push/popstate上的问题......

if(!window.history || !window.history.pushState) { ...
Run Code Online (Sandbox Code Playgroud)

...而是使用hashchange代替.:/

有什么想法吗?

PS.作为奖励,使用jquery.history.js(jquery包装的history.js版本)和hashtag url将整个事情搞砸了.

http://localhost/routetest/index.html#/page1/1234
Run Code Online (Sandbox Code Playgroud)

http://localhost/page1/1234
Run Code Online (Sandbox Code Playgroud)

...... ??? :/

javascript jquery history.js pushstate

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

使用HTML和CSS&JS创建流畅全屏布局的最佳技术?

什么是创建流体布局的最佳方式,它将在水平和垂直方向填充屏幕?(布局应该是窗口的100%高度,因此不应该看到滚动条,也不需要滚动)

我正在考虑纯粹的技术,因为布局的元素将会发生变化.

示例可能是这样的:

---------------------------------------
| HEADER  100% x 100px                |
---------------------------------------
|         |                 |         |
| SIDEBAR |      FILL       | SIDEBAR |
| 200px   |                 | 30%     |
| x 100%  |                 | x 100%  |
|         |                 |         |
|         |                 |         |
---------------------------------------
Run Code Online (Sandbox Code Playgroud)
  1. 标题,横跨整个屏幕,
  2. 侧边栏,浮动到边缘,并跨越可用高度的其余部分
  3. 和填充元素,水平和垂直填充其余元素

目前看起来这只能通过窗口调整大小的JavaScript操作来实现(就高度和填充而言).

但是,如果我们添加/删除元素,例如在标题顶部添加栏,或者采取另一个侧边栏,该怎么办?整个布局仍应填充屏幕,不需要任何代码或样式更改.我有点难以理解如何处理这整件事.

便士你的想法互联网?

html javascript css

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

抽象JavaScript库的最佳方法是什么?

什么是抽象出任何给定的JavaScript框架(jQuery,MooTools等)的最佳方法,它位于框架堆栈的底部?从本质上讲,我希望有一种情况,我可以换出库,只对框架的一层进行更改(例如,不对每个模块进行更改),整个过程可能会重新启动并运行.

因此,每个模块都应调用一个框架函数,然后将其路由到库中.

javascript

8
推荐指数
2
解决办法
1075
查看次数

如何创建自我更新的Node.js应用程序?

我有一个应用程序在任何给定的配置中运行n个服务器(比如NAT后面的一些等),因此直接推送更新不是真正可行的选项.

我计划在应用程序中构建一个自我更新程序,以便每个实例都可以从S3中下载新版本并自行更新.

什么是最好的方法来解决这个问题?

node.js

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

如何在Ant复制期间删除一个文件夹

我有一个文件,其文件路径如"LibraryX/A/Stuff/FileY.txt",我在Ant构建中使用它作为includefile.但是,我需要在复制过程中删除路径的"LibraryX/A /"部分:文件从"LibraryX/A/Stuff/FileY.txt"复制并登陆到"Stuff/FileY.txt" ".我已经研究了几个regexpmap,但根本没有取得任何成功.:/

这样做的目的是目标文件夹可以覆盖"Stuff/MoreStuff"中的自定义文件,我想使用overwrite ="false"来保持磁盘访问最小化并保持自定义文件不变.

蚂蚁:

<copy todir="C:/targetdir/" overwrite="false">
    <fileset dir="C:/sourcedir/">
        <includesfile name="C:/targetdir/includes.file" />
    </fileset>
</copy>
Run Code Online (Sandbox Code Playgroud)

Includes.file:

LibraryX/A/Stuff/FileA.txt
LibraryX/A/Stuff/FileB.txt
LibraryX/A/Stuff/FileC.txt
LibraryX/A/Stuff/FileY.txt
Run Code Online (Sandbox Code Playgroud)

Sourcedir:

sourcedir/LibraryX/A/Stuff/FileA.txt
sourcedir/LibraryX/A/Stuff/FileB.txt
sourcedir/LibraryX/A/Stuff/FileC.txt
sourcedir/LibraryX/A/Stuff/FileY.txt
Run Code Online (Sandbox Code Playgroud)

目标目录:

targetdir/Stuff/FileY.txt
Run Code Online (Sandbox Code Playgroud)

现在,sourcedirStuff -folder中的所有文件都应该以targetdir中的Stuff -folder 结尾.但是怎么样?

额外:如果我从"targetdir/LibraryX/A/Stuff"移动文件,它们将覆盖"targetdir/Stuff"文件夹中的所有内容,即使使用overwrite ="false".大概是因为它们是比目前Stuff文件夹中的文件更新的文件.

注意:我当然可以将自定义文件从目标目录移开,复制内容然后再移动自定义文件,覆盖新文件.但这会大量访问磁盘,从而减慢了进程.

ant

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

如何使用node-csv解析器跳过文件的第一行?

目前我正在使用node-csv(http://www.adaltas.com/projects/node-csv/)进行csv文件解析.

在开始解析数据之前,有没有办法跳过文件的前几行?例如,有些csv报告在实际标题和数据开始之前的前几行中有报告详细信息.

LOG REPORT                  <- data about the report
DATE: 1.1.1900
DATE,EVENT,MESSAGE          <- data headers
1.1.1900,LOG,Hello World!   <- actual data stars here
Run Code Online (Sandbox Code Playgroud)

csv node.js

7
推荐指数
3
解决办法
9897
查看次数

如何在Ant concat中保留文件顺序?

如何在Ant concat中保留文件顺序?

带有fileset&includesfile的简单concat产生相当"随机"的顺序,因为订单无法保证:

<concat destfile="C:/targetdir/concatenated.file">
    <fileset dir="C:/sourcedir/">
        <includesfile name="C:/targetdir/includes.file" />
    </fileset>
</concat>
Run Code Online (Sandbox Code Playgroud)

我需要的是以特定顺序连接文件列在包含文件中.

到目前为止,我已经找到了资源列表,它应该保留顺序,但我似乎无法用它生成任何连接文件.:/

<concat destfile="C:/targetdir/concatenated.file">
    <resourcelist>
        <file file="C:/targetdir/includes.file"/>
        <filterchain>
            <striplinecomments>
                <comment value="#"/>
            </striplinecomments>
            <prefixlines prefix="C:/sourcedir/"/>
        </filterchain>
    </resourcelist>
</concat>
Run Code Online (Sandbox Code Playgroud)

另外,资源列表似乎无法处理像

LibraryX/A/Stuff/Morestuff/*
Run Code Online (Sandbox Code Playgroud)

相反,该行只会产生"....../Morestuff/*不存在".-错误

包含文件包含相对路径列表:

LibraryX/A/Stuff/FileA.txt
LibraryX/A/Stuff/FileB.txt
LibraryX/A/Stuff/FileC.txt
LibraryX/A/Stuff/FileY.txt
Run Code Online (Sandbox Code Playgroud)

ant

6
推荐指数
3
解决办法
7467
查看次数

如何获得同位素以避免可变尺寸瓷砖的间隙

有没有办法让同位素以没有间隙的方式对网格进行排序?

我看到这些元素在少数演示中发生了变化,但我自己无法达到效果.像这里:http://isotope.metafizzy.co/demos/layout-modes.html

这是我的小提琴:http: //jsfiddle.net/crappish/zvRy5/

如您所见,当您调整"结果"的大小时,网格会改变,但在某些宽度处,马赛克中会出现白色间隙.这是非常不幸的.:(

javascript jquery jquery-isotope

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

如何深度克隆iframe?

有没有办法深度克隆iframe?

基本的jQuery克隆只是使用相同的src创建另一个iframe.我想实现的是克隆的iframe的方式,它的准确的当前内容(即任何可能的输入值,通过JavaScript等任何DOM修改).

var clone = iframe.contents().find('html').clone();
Run Code Online (Sandbox Code Playgroud)

当我克隆HTML属性及其所有子项,修改等时,我遇到了以下问题:

  1. 我错过了DOCTYPE

  2. 如何将其插入新的iFrame?

javascript iframe

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

Node.js + Express - 如何让Mustache部分工作?

我正试图让Mustache与Express一起正常工作,正如人们可以猜到的那样,我遇到了麻烦.

以下行初始化了Mustache很好并且干净.变量按预期呈现.

app.register('html', require(__dirname+'/public/js/libs/mustache.js'));
Run Code Online (Sandbox Code Playgroud)

然而,当混合物中出现局部物时,问题开始上升.使用Mustache,这里部分应该调用header view/partial.

{{> header}}
Run Code Online (Sandbox Code Playgroud)

但唉,没有任何反应.:/即使我直接提供部分,Mustache也无法呈现它.

app.get('/', function(req, res) {
    res.render('welcome', {
        partials: {
            header: '<h1>Header</h1>'           
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

所以,部分似乎根本不起作用.我发现一个黑客可以让部分工作有点起作用:

http://bitdrift.com/post/2376383378/using-mustache-templates-in-express

之后,部分渲染在渲染调用时直接提供(见上文),但是在将部分直接渲染到视图/布局时仍然无法实现:

布局看起来像这样:

Behold, the header
{{> header}}
<p>Let's move to more important stuff...</p>
Run Code Online (Sandbox Code Playgroud)

标题视图看起来像这样:

<h1>Header</h1>
Run Code Online (Sandbox Code Playgroud)

Express可以自己加载视图,但它不知道如何处理Mustache部分...

node.js mustache express

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

数据绑定到Mustache模板?(最好干净简单)

我所追求的是一段代码,可以为我提供一个简洁的单向解决方案,将DOM中的更改绑定到用于呈现它的对象.

示例:和对象

{name: 'Joe'}
Run Code Online (Sandbox Code Playgroud)

用于呈现Mustache模板

<div><input val="{{name}}" /></div>
Run Code Online (Sandbox Code Playgroud)

如何将inputfield中的change事件与正确的属性相匹配?

迭代怎么样?

{{#users}}
<div><input val="{{name}}" /></div>
{{/users}}
Run Code Online (Sandbox Code Playgroud)

有这样的事吗?

编辑:是的,我知道Backbone,Angular,Ember,younameit.但是,我需要的是Mustache/Handlebars的具体案例.

javascript data-binding mustache

5
推荐指数
2
解决办法
6302
查看次数