当他们的socket id直接存储在io.sockets.on('connect')函数中时,我似乎只能向用户发出消息.我不知道为什么在他们登录后尝试存储他们的套接字ID时它不起作用.
工作:
var clients = {};
/** A new socket connection has been accepted */
io.sockets.on('connection', function (socket)
{
//Used to access session id
var hs = socket.handshake;
clients[socket.id] = socket; // add the client data to the hash
users['brownj2'] = socket.id; // connected user with its socket.id
socket.on('user-login', function(user){
if(!users[username]){
//users[username] = socket.id; // connected user with its socket.id
}
})
socket.on('page-load', function(pid)
{
if(users['brownj2'])
{
clients[users['brownj2']].emit('hello');
}
else
{
console.log("NOT FOUND BROWNJ2");
}
}
}
Run Code Online (Sandbox Code Playgroud)
不工作:
var …Run Code Online (Sandbox Code Playgroud) 是否可以创建快速(节点)应用程序而无需模板引擎,如jade或ejs.我在大学里有一个大型的最后一年项目,我将使用node,express,socket.io,mongoDB和websockets.我不想让自己也不得不学习模板语言!
默认情况下express使用jade -t, - template添加模板支持(jade | ejs).默认=玉
我想通过页面视图独立写入HTML头元素,而不是通过_Layout.cshtml,因为每个页面都需要不同的脚本,元数据,标题等.这可以在ASP.NET MVC 3中完成,使用C#/剃刀?
@using Test.Models;
@model IEnumerable<Player>
<!--
Put JavaScript, CSS etc... Into the page <head> here.
-->
<h2>Index</h2>
<table id="scores">
<tr>
<th>Name</th>
<th>Age</th>
<th>Gender</th>
</tr>
@foreach(Player p in Model)
{
<tr>
<td>@p.name</td>
<td>@p.age</td>
<td>@p.gender</td>
</tr>
}
</table>
<canvas id="game" width="800" height="600">
<p>Download a modern browser.</p>
</canvas>
Run Code Online (Sandbox Code Playgroud) 我目前正在使用:
*{
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
Run Code Online (Sandbox Code Playgroud)
转到http://jsfiddle.net/KyF5x/并单击列表下方,看到这突出显示了文本...无法突出显示.重新加载页面,现在尝试ctrl + a,看到这也会突出显示文本.
Chrome,Safari或IE 10中不会出现上述情况.
免责声明:我使用的是Firefox 18
我的一位大学讲师指出,看到WebSockets用于文件传输会很有趣.我想可以使用base64对图像文件进行解码和编码,但是可以通过WebSocket发送JavaScript/CSS文件吗?
我正在使用的服务器是Node.js,我的浏览器是Google Chrome 16.
编辑:我的一个朋友刚刚在Linux上对相同的应用程序进行了基准测试,平均r/s约为7000.
编辑#2:我已经检查了Node.exe的CPU使用率,它只使用了5-6%的cpu.当一个四核机器上的这个数字应该是12%,如果在真正负载的情况下在单个线程上运行时,8个线程CPU应该是这个数字?
我编写了一个Node.js应用程序(运行Node v0.6.10)并使用apachebench对其进行基准测试:ab -c 256 -n 50000 http://localhost:3000/.我每秒钟收到大约650个请求的请求.这里有太多代码,但这是基本结构:
应用程序设置:
/**
* Module dependencies.
*/
var util = require('util'), //Useful for inspecting JSON objects
express = require('express'), //Express framework, similar to sinatra for ruby
connect = require('connect'), //An integral part of the express framework
app = module.exports = express.createServer(), //Create the server
io = require('socket.io').listen(app), //Make Socket.io listen on the server
parseCookie = require('connect').utils.parseCookie, //Parse cookies to retrieve session id
MemoryStore = require('connect').session.MemoryStore, …Run Code Online (Sandbox Code Playgroud) 当C#创建HTTP GET请求时,Stackoverflow API返回意外响应.
如果我将http://api.stackoverflow.com/1.1/users/882993粘贴到浏览器地址栏中,我会得到正确的JSON响应:
{
"total": 1,
"page": 1,
"pagesize": 30,
"users": [
{
"user_id": 882993,
"user_type": "registered",
"creation_date": 1312739131,
"display_name": "Jack",
"reputation": 1926,
"email_hash": "69243d90e50d9e0b3e025517fd23d1da",
"age": 23,
"last_access_date": 1358087009,
"website_url": "http://jtbrown.me.uk",
"location": "Birmingham, United Kingdom",
"about_me": "<p>Student.</p>\n",
"question_count": 68,
"answer_count": 79,
"view_count": 115,
"up_vote_count": 98,
"down_vote_count": 3,
"accept_rate": 94,
"association_id": "d64187a3-bf66-4a4d-8e87-6ef18f0397e3",
"user_questions_url": "/users/882993/questions",
"user_answers_url": "/users/882993/answers",
"user_favorites_url": "/users/882993/favorites",
"user_tags_url": "/users/882993/tags",
"user_badges_url": "/users/882993/badges",
"user_timeline_url": "/users/882993/timeline",
"user_mentioned_url": "/users/882993/mentioned",
"user_comments_url": "/users/882993/comments",
"user_reputation_url": "/users/882993/reputation",
"badge_counts": {
"gold": 0,
"silver": 7,
"bronze": 34 …Run Code Online (Sandbox Code Playgroud) 是否有可能在PHP中存储类似于$ _SESSION ['somedata'] ="Hello"的会话数据?
到目前为止,这是我的代码:
创建内存存储
var MemoryStore = express.session.MemoryStore,
sessionStore = new MemoryStore();
Run Code Online (Sandbox Code Playgroud)
快速配置
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({
store: sessionStore,
secret: 'secret',
key: 'express.sid'}));
app.use(require('stylus').middleware({src: __dirname + '/public'}));
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
Run Code Online (Sandbox Code Playgroud)
解析cookie以获取握手授权的会话ID
var parseCookie = require('connect').utils.parseCookie;
io.set('authorization', function (data, accept) {
if (data.headers.cookie) {
data.cookie = parseCookie(data.headers.cookie);
data.sessionID = data.cookie['express.sid'];
sessionStore.get(data.sessionID, function (err, session) {
if (err)
{
accept(err.message, false); //Turn down the connection
}
else
{
data.session …Run Code Online (Sandbox Code Playgroud) 无论我在文档的何处单击,我都想触发 focusout 事件。但是,我使用的是可排序列表,其中每个可排序项目都包含一个文本区域,单击可排序项目时不会触发 focusout 事件。对于可拖动的项目也会发生同样的情况。我创建了一个 jsfiddle 来展示这个问题:
单击文本区域并尝试单击蓝色矩形内的任意位置: 在 Google Chrome 中测试 http://jsfiddle.net/RWJhs/
有任何已知的解决方法吗?
JavaScript:
$("textarea").focusout(function(){
alert("Do something");
});
$("#draggable").draggable();
Run Code Online (Sandbox Code Playgroud)
HTML:
<div id="draggable">
<textarea></textarea>
</div>
Run Code Online (Sandbox Code Playgroud) 我最近升级到Visual Studio 2013,这在使用MSBuild(使用命令行参数的API或可执行文件)进行外部构建时导致了背靠背问题
问题#1 使用MSBuild构建时,它不会生成单元测试所需的伪组件,这会导致构建失败.Visual Studio中的简单构建会暂时修复此问题,直到需要生成新的假装配.
问题#2 运行代码分析时,会抱怨以下内容:
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\CodeAnalysis\Microsoft.CodeAnalysis.targets(284,5):
error MSB4127: The "CodeAnalysis" task could not be instantiated from the assembly "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\CodeAnalysis\.\FxCopTask.dll".
Please verify the task assembly has been built using the same version of the Microsoft.Build.Framework assembly as the one installed on your computer and that your host application is not missing a binding redirect for Microsoft.Build.Framework. Unable to cast object of type 'Microsoft.Build.Tasks.CodeAnalysis' to type 'Microsoft.Build.Framework.ITask'.
Run Code Online (Sandbox Code Playgroud)
我只在我的机器上安装了Visual Studio 2013,显然安装旧版本可以解决问题,但这不是我能做的事情.(VS 2013发布了自己的MSBuild 12.0,它位于与之前MSBuild不同的目录中).
我不确定为什么Visual Studio的行为与MSBuild有任何不同,我只是简单地指向解决方案文件......
msbuild.exe …Run Code Online (Sandbox Code Playgroud)