在Ubuntu中它非常简单; 我可以运行应用程序:
$ NODE_ENV=production node myapp/app.js
Run Code Online (Sandbox Code Playgroud)
但是这不适用于Windows.是否有配置文件,我可以设置属性?
我已经使用WebSockets一段时间了,我选择使用Node服务器和WebSockets为大学的最后一年项目创建一个敏捷项目管理工具.我发现使用WebSockets提供的应用程序每秒可处理的请求数量增加了624%.
然而,自从启动项目以来,我已经阅读了安全漏洞,并且一些浏览器默认选择禁用WebSockets.
这引出了我的问题:
当WebSockets似乎在降低延迟和资源开销方面做得如此出色时,为什么要使用AJAX?AJAX比WebSockets做得更好吗?
是否可以在Node.js中打印对象内容,例如方法和属性?
目前我正在尝试打印会话对象并获得以下内容:
console.log("Session:" + session);
> Session:[object Object]
Run Code Online (Sandbox Code Playgroud)
也许与PHP中的print_r(数组)类似,或者在Java中使用.toString.
是否可以使用socket.io强制所有客户端更新?我尝试了以下内容,但在新客户端连接时似乎没有更新其他客户端:
我正在尝试向所有客户端发送一条消息,其中包含当前连接的用户数,它正确地发送了大量用户....但是,在刷新页面之前,客户端本身似乎没有更新.我希望这发生是实时的.
var clients = 0;
io.sockets.on('connection', function (socket) {
++clients;
socket.emit('users_count', clients);
socket.on('disconnect', function () {
--clients;
});
});
Run Code Online (Sandbox Code Playgroud)
var socket = io.connect('http://localhost');
socket.on('connect', function(){
socket.on('users_count', function(data){
$('#client_count').text(data);
console.log("Connection");
});
});
Run Code Online (Sandbox Code Playgroud) 我正在使用Redis 2.2.13版
jack@ubuntu:~/redis$ src/redis-server
[23900] 14 Sep 14:28:52 # Warning: no config file specified, using the default config. In order to specify a config file use 'redis-server /path/to/redis.conf'
[23900] 14 Sep 14:28:52 # Opening port: bind: Address already in use
Run Code Online (Sandbox Code Playgroud)
所以我按照上面的说明试试
redis-server $HOME/redis/redis.conf
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误:
*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 135
>>> 'slave-serve-stale-data yes'
Bad directive or wrong number of arguments
Run Code Online (Sandbox Code Playgroud)
该文件有以下注释:
# When a slave lost the connection with the master, or when …Run Code Online (Sandbox Code Playgroud) 如果用户已经登录并尝试在新实例中再次登录,我希望它能够注销其他用户实例.我不希望同一个用户在我的应用程序上登录两次.
目前会话存储在Redis存储中,我使用express/connect来处理会话存储.可用于销毁会话的其中一个功能如下:
.destroy(sid, callback)
Run Code Online (Sandbox Code Playgroud)
但是我需要在调用.destroy()之前找到该会话ID.在Redis中,用户名存储为会话的一部分.
问题:是否可以查询Redis以获取基于用户名的会话ID?
我一直在寻找,但似乎无法找到解决方案.是否可以在Windows 7上的Node.js上安装Socket.io?
如果没有,是否有某种替代方案,或者您知道未来的Windows支持吗?
通常使用Node.js包管理器,但是我找不到在Windows上安装它的方法.http://npmjs.org/
我目前正在使用Node.exe(不通过Cygwin运行它).
如果NPM工作,这就是我想象它将安装在Windows上的方式:
npm install socket.io
Run Code Online (Sandbox Code Playgroud)
只需安装Node.js并输入npm install socket.ioWindows控制台并查看即可C:\Users\[insert username]\node_modules.
我目前正在尝试动态创建具有水平计数功能的推文按钮:
JavaScript的
var twitter = document.createElement('a');
twitter.setAttribute('href', 'http://twitter.com/share');
twitter.setAttribute('class', 'twitter-share-button twitter-tweet');
twitter.setAttribute('data-url','http://mindcloud.co.uk/idea/?idea=' + this.id);
twitter.setAttribute('data-count', 'horizontal');
twitter.setAttribute('data-via', 'jtbrowncouk');
twitter.style.top = '20px';
twitter.style.left = '300px';
twitter.innerHTML = "Tweet";
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是该按钮显示为文本链接,而不是带有水平计数框的按钮.
我以相同的方式创建了一个facebook按钮,它可以正常工作,但为了使其工作,我使用以下内容:
JavaScript的
var facebook = document.createElement('fb:like');
facebook.setAttribute('id', 'like'+this.id);
facebook.setAttribute('href', 'http://mindcloud.co.uk/idea/?idea=' + this.id);
facebook.setAttribute('layout', 'button_count');
facebook.setAttribute('send', 'false');
facebook.setAttribute('width' , '300');
facebook.setAttribute('font', '');
facebook.setAttribute('show_faces', 'true');
facebook.style.top = '0px';
facebook.style.left = '300px';
Run Code Online (Sandbox Code Playgroud)
使用以下内容:
FB.XFBML.parse();
Run Code Online (Sandbox Code Playgroud)
解析并绘制按钮.FB.XFBML.parse()来自
http://connect.facebook.net/en_US/all.js
当我在.html文件中静态创建Tweet按钮时,它可以正常工作.我在索引页面中包含以下脚本,其中应该动态创建tweet按钮:
<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
Run Code Online (Sandbox Code Playgroud)
如果你能看到我做错了什么,请通知我!
以下屏幕截图给出了推文按钮出现问题的可视化解释!

解:
我现在设法解决了这个问题.我想象的问题是twitter脚本在加载时运行,而不是在创建元素时重新运行.
使用以下jQuery正常工作!
$ .getScript(" http://platform.twitter.com/widgets.js ");
我已经按照以前一直为我工作的完全相同的步骤,通过express创建应用程序,将模块依赖项放在node_modules文件夹中.似乎找不到socket.io客户端javascript文件.
(我已经查看了其他人的修复,这是在脚本选项卡中包含JavaScript文件.我没有必要为我之前的节点+ socket.io项目执行此操作).
客户端上的JavaScript:
var socket = io.connect('http://localhost');
Run Code Online (Sandbox Code Playgroud)
服务器上的JavaScript:
var io = require('socket.io').listen(app);
Run Code Online (Sandbox Code Playgroud)
node_modules文件夹:
socket.io, which has an internal node_modules folder containing socket.io-client
Run Code Online (Sandbox Code Playgroud)
错误信息:
Uncaught ReferenceError: io is not defined
(anonymous function)
Run Code Online (Sandbox Code Playgroud)
当我手动包含socket.io客户端时: http ://cdn.socket.io/stable/socket.io.js
我得到一个不同的错误:
Uncaught TypeError: Object #<Object> has no method 'connect'
(anonymous function)
Run Code Online (Sandbox Code Playgroud) 我正在使用Node.js和Socket.io.我编写了一个应用程序,它可以从服务器发送JavaScript片段并在客户端上执行它们.JavaScript通过Secure WebSocket(WSS)发送,客户端有一个监听器,它将执行通过服务器传递给它的任何代码.
这个简短的脚本演示了原理:http://jsfiddle.net/KMURe/,您可以将onScript函数视为套接字侦听器.
我可以采用哪些安全协议来确保此交易安全?安全的websocket频道是否会使第三方难以充当中间人(在将代码发送到客户端之前更改代码)?