这是我的问题:
我有服务器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) 所以.我有域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).
但是,我不确定这个解决方案有多安全?或者还有其他更安全的解决方案吗?
我有使用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)
...... ??? :/
什么是创建流体布局的最佳方式,它将在水平和垂直方向填充屏幕?(布局应该是窗口的100%高度,因此不应该看到滚动条,也不需要滚动)
我正在考虑纯粹的技术,因为布局的元素将会发生变化.
示例可能是这样的:
---------------------------------------
| HEADER 100% x 100px |
---------------------------------------
| | | |
| SIDEBAR | FILL | SIDEBAR |
| 200px | | 30% |
| x 100% | | x 100% |
| | | |
| | | |
---------------------------------------
Run Code Online (Sandbox Code Playgroud)
目前看起来这只能通过窗口调整大小的JavaScript操作来实现(就高度和填充而言).
但是,如果我们添加/删除元素,例如在标题顶部添加栏,或者采取另一个侧边栏,该怎么办?整个布局仍应填充屏幕,不需要任何代码或样式更改.我有点难以理解如何处理这整件事.
便士你的想法互联网?
什么是抽象出任何给定的JavaScript框架(jQuery,MooTools等)的最佳方法,它位于框架堆栈的底部?从本质上讲,我希望有一种情况,我可以换出库,只对框架的一层进行更改(例如,不对每个模块进行更改),整个过程可能会重新启动并运行.
因此,每个模块都应调用一个框架函数,然后将其路由到库中.
我有一个应用程序在任何给定的配置中运行n个服务器(比如NAT后面的一些等),因此直接推送更新不是真正可行的选项.
我计划在应用程序中构建一个自我更新程序,以便每个实例都可以从S3中下载新版本并自行更新.
什么是最好的方法来解决这个问题?
我有一个文件,其文件路径如"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)
现在,sourcedir中Stuff -folder中的所有文件都应该以targetdir中的Stuff -folder 结尾.但是怎么样?
额外:如果我从"targetdir/LibraryX/A/Stuff"移动文件,它们将覆盖"targetdir/Stuff"文件夹中的所有内容,即使使用overwrite ="false".大概是因为它们是比目前Stuff文件夹中的文件更新的文件.
注意:我当然可以将自定义文件从目标目录移开,复制内容然后再移动自定义文件,覆盖新文件.但这会大量访问磁盘,从而减慢了进程.
目前我正在使用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) 如何在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) 有没有办法让同位素以没有间隙的方式对网格进行排序?
我看到这些元素在少数演示中发生了变化,但我自己无法达到效果.像这里:http://isotope.metafizzy.co/demos/layout-modes.html
这是我的小提琴:http: //jsfiddle.net/crappish/zvRy5/
如您所见,当您调整"结果"的大小时,网格会改变,但在某些宽度处,马赛克中会出现白色间隙.这是非常不幸的.:(
有没有办法深度克隆iframe?
基本的jQuery克隆只是使用相同的src创建另一个iframe.我想实现的是克隆的iframe的方式,它的准确的当前内容(即任何可能的输入值,通过JavaScript等任何DOM修改).
var clone = iframe.contents().find('html').clone();
Run Code Online (Sandbox Code Playgroud)
当我克隆HTML属性及其所有子项,修改等时,我遇到了以下问题:
我错过了DOCTYPE
如何将其插入新的iFrame?
我正试图让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部分...
我所追求的是一段代码,可以为我提供一个简洁的单向解决方案,将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的具体案例.