小编Mat*_*ier的帖子

Socket.io:如何处理关闭连接?

我试图了解哪些是我的应用程序的"物理"限制.

在客户端:

var socket = io.connect("http://127.0.0.1:6701");
socket.on('connect', function() {
  socket.disconnect();
});
socket.on('disconnect', function() {
  socket.socket.reconnect();
});
Run Code Online (Sandbox Code Playgroud)

在服务器端:

var io = require('socket.io').listen(6701);

io.sockets.on('connection', function(socket) {

  socket.on('disconnect', function(reason) {
    var o = Object.keys(socket.manager.open).length
      , c = Object.keys(socket.manager.closed).length
      , cA = Object.keys(socket.manager.closedA).length
      , h = Object.keys(socket.manager.handshaken).length

      console.log("open: " + o)
      console.log("closed: " + c)
      console.log("handshaken: " + h)
      console.log("closedA: " + cA)
      console.log("---");
   });
});
Run Code Online (Sandbox Code Playgroud)

在OSX中我达到文件限制(256)时,统计数据如下

open: 471
closed: 235
handshaken: 471
closedA: 235
Run Code Online (Sandbox Code Playgroud)

令我困惑的是:

  • 如果我强行关闭连接(这是我想对客户端做的disconnect(),为什么我仍然使用文件句柄(所以我达到文件限制)编辑:添加延迟似乎服务器可以保持呼吸,从不达到文件限制)?
  • 有没有办法完全关闭套接字,所以我可以非常肯定很少达到文件限制(我知道我可以把它推到65K)?
  • 有没有办法知道我达到了文件限制,以便我可以停止接受连接?

谢谢

macos node.js socket.io

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

你如何组织你的工作?

你如何工作的?更具体地说,您如何保持编程任务的有序性.

当我在家里进行Mac开发时,我使用称为大纲的软件来组织,记录笔记并优先处理我需要做的任务.我开始使用一个名为Deep Notes的程序 ,这是一个很好的简单免费工具.但现在我使用命中列表.

我一直在Windows平台上寻找一个相当好的程序,但到目前为止还没找到.到目前为止,我已经尝试过FusionDesk并且对它不满意.我开始想要编写自己的软件,但我想先问一下,看看是否有人知道我在这个庞大的互联网上找不到的好产品.

更新

如果您从未使用过大纲来组织想法,请参阅以下简要概述. http://en.wikipedia.org/wiki/Outliner 一个好的大纲比一个简单的平面分层TODO列表更复杂,但很简单,只是一个小技巧.大纲者最重要的功能之一是能够创建嵌套的任务层次结构.例如:

  • 实现功能A.
  • ---在数据级别添加支持
  • ---为功能A创建快速界面
  • ---创建将接口连接到数据层的业务逻辑
  • ---优化界面

您还可以折叠嵌套任务,如文件夹结构.如果我没有使用功能A,那么我应该能够折叠树,这样它的子任务就不可见了.

project-management

17
推荐指数
3
解决办法
4930
查看次数

ASP.NET-仅在CSS不包含时如何包含它?

我使用下面的代码动态地包含CSS文件:

HtmlHead head = (HtmlHead)Page.Header;
HtmlLink link = new HtmlLink();
link.Attributes.Add("href", Page.ResolveClientUrl("~/App_Themes/Default/StyleSheet.css"));
link.Attributes.Add("type", "text/css");
link.Attributes.Add("rel", "stylesheet");
head.Controls.Add(link);
Run Code Online (Sandbox Code Playgroud)

问题是:我只想执行一次,并且只在页面中未包含它时才这样做。

如何验证它是否已包含?

编辑:

告诉我使用进行页面加载的答案!IsPostBack无法解决我的问题,因为此代码将位于Web用户控件内,并且我的页面可能具有许多相同的用户控件。

例如,我使用下面的代码来使用javascript:

if (!Page.ClientScript.IsClientScriptIncludeRegistered("jsScript"))
{
    Page.ClientScript.RegisterClientScriptInclude("jsScript", ResolveUrl("~/Utilities/myScript.js"));
}
Run Code Online (Sandbox Code Playgroud)

css asp.net verify include stylesheet

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

ALSB自动化

WebLogic的一个优雅之处是WLST(Weblogic Sc​​ripting).是否可以编写在ALSB(Aqualogic Service Bus)中完成的操作?

例如:从总线导出资源.

weblogic wlst alsb

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

检测 .Net Core 中的 Windows 代理设置

我们的一台测试服务器具有代理设置,我能够使用 1 行 powershell 命令检测要使用的代理。

 (new-object System.Net.WebClient).Proxy.GetProxy("https://www.google.com")
Run Code Online (Sandbox Code Playgroud)

但是,如果我在 .Net Core 中实例化 WebClient 对象,则代理为 null。我们当前的解决方案是简单地为所有传出连接设置代理作为环境配置的一部分。这对于我们的一些更简单的服务来说效果很好,这些服务只联系一个需要代理的端点,但是我现在正在研究一种修复方法,其中一个端点需要代理,而另一个端点则不需要。

我的选择是

  1. 添加不被代理的端点的排除列表
  2. 以某种方式从操作系统获取代理设置

这个问题正在寻求第 2 号的帮助。我可以毫无问题地实施选项 1。

我最好的猜测是,由于 .Net 架构的变化,代理信息不可用。我发现了以下有启发性的引述。( https://github.com/dotnet/runtime/issues/24756 ) 我们使用 dot net core 3。

从 .NET Core 2.1 开始,.NET Core 中使用的 HTTP 协议栈已更改。它不再使用本机 Windows WinHTTP 或 Linux 'libcurl'。这些现在被认为是“遗留”堆栈。我们有一个新的 HTTP 协议栈,称为“SocketsHttpHandler”。默认情况下使用它。

所以基本上我认为我正在寻找一些神奇的代码来从旧的 Windows 网络堆栈中获取代理信息(如果在 Windows 上运行)。

bool isWindows = System.Runtime.InteropServices.RuntimeInformation
                                               .IsOSPlatform(OSPlatform.Windows);

if (isWindows) {
   // Do magic get proxy settings secret sauce.
}
Run Code Online (Sandbox Code Playgroud)

.net .net-core

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