我有一个客户端服务器应用程序运行在:服务器:Windows Server 2008 R2 [标准]客户端:Windows XP SP3 工作stream:服务器在YY端口监听客户端连接。 客户端连接到端口YY的服务器。 数据从服务器传输到客户端。 服务器closures套接字(带重用选项,TF_REUSE_SOCKET)客户端closures套接字。 问题:在正常情况下,数据传输完成后服务器closures套接字,一切工作正常。 但在客户端首先closures套接字(取消数据传输)的情况下,套接字状态@服务器更改为CLOSED_WAIT(因为服务器从客户端接收FIN)。 在客户端,FIN_WAIT_2中的套接字状态。 这个套接字状态永远保持。 sockets没有释放。 如果服务器也是WindowsXP XP3,相同的应用程序工作正常。 是否有在Windows2008 R2中,使我的应用程序不释放套接字(或更改套接字状态从CLOSED_WAIT)的任何设置? 注意:我configuration了[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ Tcpip \ Parameters] TcpFinWait2Delay = 60但没用。
我一直在阅读需要使用外部STUN服务器的NAT穿越。 公共STUN服务器很less,但是我不知道如何使用它们来查找可以被另一个客户端用来启动连接的公共IP。 作为一个noob在这个,我无法find正确的文件,这使用BSDsockets。 如果有人能解释我怎么能find我的公共IP以BSD套接字为基础是好的。 此外,如果你可以提供这个很好的链接,它也wpuld不胜感激。
我目前正在构build一个也使用websockets的web应用程序。 (用于web服务器的Rails和用于socket.io的Nodejs) 我已经构build了我的应用程序来使用子域来分离连接到Nodejs服务器和Railsnetworking服务器。 我有“socket.mysite.com”redirect到节点服务器和其他一切到Web服务器。 我能够在本地主机上testing这个function。 我只是修改我的/ etc / hosts以包含以下内容: 127.0.0.1 socket.mysite.com 127.0.0.1 mysite.com我知道在生产中,我只需要为socket.mysite.com生成一个CNAMElogging,这也可以在用户的计算机上运行。 不过,我习惯于通过传递IP地址来testing我的应用程序。 我的团队通常在自己的机器上设置服务器并进行开发。 当我们想testing我们的个人服务器时,我们只是传递一个像“ http://123.45.123.45 ”这样的IP。 有了新的子域名攻击,如果不修改我的testing者的每个/ etc / hosts,就不能再这样做了。 我真的不希望我的testing者当场修改他们的/ etc / hosts。 我可以做的是让我的团队的每个成员都有自己的域,并为每个团队成员创build适当的CNAMElogging。 有一个更简单的方法,让我在IP上运行我的应用程序,只是传递IP?
我写了一个使用PHP web套接字的游戏,在我的本地开发服务器上运行良好。 我现在试图在非本地服务器上运行Web套接字服务器,但我的客户端JavaScript无法连接。 我试图在干净的Ubuntu Server x64安装 – 我已经安装了apache2,php5,并确保PHP套接字扩展启用; 该服务器非常适合非web套接字的目的。 有没有我错过的configuration设置? 我尝试closures我的防火墙(通过ufw disable )。 任何线索将不胜感激。 编辑 这里是我使用的PHP库: https : //github.com/Flynsarmy/PHPWebSocket-Chat 我已经意识到,我实际上不会需要Apache为我在做什么 – 我只需要传入的请求被接受和解释的PHP。 有没有办法确保所有传入的请求都可以访问我的PHP程序?
我试图build立一个服务器结构的应用程序,我正在build立在Node.js与socket.io。 我的设置是: HAProxy前端转发到 -> apache2 as default backend (or nginx, is apache in this local test) -> node.js app if the url has socket.io in the request AND a domain name 我有这样的东西: global log 127.0.0.1 local0 log 127.0.0.1 local1 notice maxconn 4096 user haproxy group haproxy daemon defaults log global mode http maxconn 2000 contimeout […]
我仍然与处理HAproxy的configuration,使其与socket.io工作。 我最后一个问题是: HAProxycaching转发? 我得到它的工作,但由于某种原因,身份validation后,发送一些命令,连接被删除,并build立一个新的连接,你可以看到这里: info – handshake authorized 2ZqGgU2L5RNksXQRWuhi debug – setting request GET /socket.io/1/websocket/2ZqGgU2L5RNksXQRWuhi debug – set heartbeat interval for client 2ZqGgU2L5RNksXQRWuhi debug – client authorized for debug – websocket writing 1:: debug – websocket received data packet 5:3+::{"name":"ferret","args":["tobi"]} debug – sending data ack packet debug – websocket writing 6:::3+["woot"] info – transport end […]
我想知道如何/如何实现以下设置。 它似乎不符合标准的SSH端口转发模型。 我有一个客户端机器A.我有一台运行在机器A上的服务器应用程序,它在端口X上侦听。但是,机器A在普通IP地址后面(由许多用户共享),所以它不能接收到端口的传入连接X从互联网。 但是,我有权访问Amazon EC2中的计算机B,并且确定连接将通过该计算机。 在EC2中将应用程序移动到这台机器是不可能的。 因此,我想要的是让机器B在端口X上侦听并将所有连接/通信转发给机器A.机器A必须看到它,就好像客户端以通常方式连接到端口X一样(可以接受的是源IP显示为机器B)。 解决scheme必须以这样的方式工作,即机器A是连接到机器B的客户机。所以对于ssh,A必须是ssh客户机,而B是ssh服务器。 同样,这是因为机器A在普通IP之后,因此所有连接必须从A传出。 这个设置如何实现? 最好使用通用的免费软件? 先谢谢你。
首次在PROD环境下testing一个socket.io应用程序时,我们发现xhr-polling传输(Ajax长轮询)工作时, websocket传输不起作用。 看着使用Fiddler传输的数据,我可以看到 UPGRADE发生了 来自服务器的第一条消息(总共5个字节)到达客户端。 客户端然后发送一些消息到服务器,通常导致服务器 – >客户端消息 但是那些服务器 – >客户端消息永远不会到达(我甚至不确定客户端 – >服务器消息是否到达服务器端)。 最终(大约6秒后),提琴手报告了一个 Read from Server failed… 并build立了一个新的连接,就像第一个连接不成功一样。 我们的设置看起来像这样: 互联网 – >防火墙 – > BIG-IP 3600(终止SSL) – > Node.js服务器 我认为防火墙不可能是罪魁祸首,因为它看到的只是一个SSLencryption的数据stream,而且非websocket传输起作用。 我也尝试了socket.io的match origin protocol选项,但没有成功。 不幸的是我不能在那个环境中自由地玩,所以我试图在我的DEV环境中复制这个问题,但没有成功。 我创build了一个软件SSL代理(使用node.js的http-proxy ),它应该类似于BIG-IP。 但是通过带有websockets的SSL代理工作得很好。 这可能是BIG-IP的问题吗? 组态? 还有什么呢?
我目前正在开发一个Web应用程序,并试图找出主办它的最佳方式。 我环顾四周,使用了几十个不同的措辞,阅读了数百个post和评论。 但他们似乎都没有回答这个问题的特定方面。 他们解释了如何计算一个应用程序的特定实例可以处理的当前用户的数量。 但不是如何确定去那里达到你的目标。 我已经看过云,我已经看过VPS,当然我认为所有的都有不同的价格,但最终我意识到这一切都归结为您需要扩展的方向(垂直,向任何一个方向添加更多的权力应用程序的实例通过更多的CPU功率和更多的RAM;或水平地,添加应用程序的新实例和负载缩放它们) 第1部分 现在让我们来看一个小场景让我们说你有一个API应用程序。 它需要HTTP请求和响应与JSON,天气它build立在节点,Rails,PHP或其他任何东西都是不敬的。 假设您可以在峰值时间估算所有这些因素:并发用户数:100 – > 1000 – > N每个用户每分钟的请求数:1? 10? 50? 每个请求平均传输的数据大小:1Kb? 2KB? 5KB? 10? 你如何确定哪个方向是最好的规模? 这是这些因素的比例吗? 有没有什么地方可以达到这些因素之一呢? 第2部分 这一次让我们假设一个不同types的应用程序。 这一次,它是一个处理实时数据交换的networking套接字应用程序,如聊天或事件通知(从Redis或RabbitMQ等消息推送的事件)。这个应用程序(形成我收集的内容)将完全不同于相同的因素作为第一部分,你如何确定去哪个方向? 总体 我问这些问题,找出哪种types的托pipe将是最适合哪个应用程序。 这会给我更多的稳定性? 这会让我为同样数量的用户在口袋里保留更多的钱吗?
当我通过虚拟IP访问Web套接字时,无法使Web套接字在我的网站上工作。 如果我使用它的真实(内联网)IP,一切工作完美。 如果我使用虚拟IP,我可以在Google Chrome控制台上看到: SignalR: Connecting to websocket endpoint 'ws://123.456.78.9/signalr/connect?transport=webSockets&connectionToken=0vWQGMzm6Hb59MMbQIEPODQnjqUUxAMmiITaNHUZYZ1tfAK%2FQvXCVDRNll0y4vQkzNcSdK7smLN%2FzCRFtK7AWogA%2FjfwNt47eUu%2F7TdwFYUZCkZlQMP8xqkaY5kfA0oO9N2F5tQYBGedapl3YxHjNQ%3D%3D&connectionData=%5B%7B%22name%22%3A%22jobhub%22%7D%5D&tid=3'. SignalR: Closing the Websocket. 我在MSIE上得到这个: SCRIPT12031: WebSocket Error: Network Error 12031, The connection with the server was reset 有什么办法可以做这个工作吗?