Articles of 套接字

使用Node.js在Amazon Linux AMI上设置websocket服务器

我一直在尝试在Amazon EC2实例上设置一个简单的websocket服务器。 我正在使用Linux的微型实例。 第一次启动后,我更新了所有的操作系​​统软件包, 遵循这个伟大的指南获取节点和NPM安装 ,安装socket.io,expression(目前不使用),和websocket.io其中包括由miksago websocket服务器。 首先,我将Socket.io作为后端。 我使用下面列出的网站的示例代码设置了一个简单的服务器。 我用sudo node server.js运行这个。 我使用sudo,以便可以在端口80上侦听,否则会导致错误。 从这里,我把我的亚马逊公共DNS到websocket.org回声testing的位置字段。 当我按连接,我的服务器将输出debug – destroying non-socket.io upgrade 。 我有一个控制台输出内的“连接”监听器,永远不会打印,所以看起来有一个错误之前,连接请求通过。 这可能是我必须使用socket.io客户端的一个socket.io服务器工作,但我找不到任何明确的答案。 我第二次尝试使用Miksago的websocket-server。 我将列出下面的服务器的源代码。 这一次,我能够看到连接请求上的控制台输出,但连接仍未build立。 我试图打印connection.header对象,但收到一个错误。 我试图build立一个简单的服务器,只是为了让基础知识去,我一直无法确定是什么问题。 我使用websocket.org来testing服务器,因为他们的客户端设置正确。 我在做什么错误设置服务器? Socket.io server var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { console.log("Connection request on socket.io server"); }); Websocket-Server var ws = require("websocket-server"); var server = ws.createServer(); server.addListener("connection", […]

看起来是在acl匹配的后端和默认的后端之间“随机”切换

我有HAProxy作为代理前面的: 一个NGinx实例 在由socket.io(websockets)公开的多个dynamic服务之前的内部负载平衡器 我的问题是,我的连接不时被正确地代理到我的socket.io集群,然后随机地回退到NGinx,这显然是令人讨厌和毫无意义的,因为NGinx并不是要处理这个请求。 在请求格式的URL时会发生这种情况: http://mydomain.com/backends/* 在HAProxyconfiguration中有一个ACL来匹配'/ backends / *'path。 这里是我的HAProxyconfiguration的简化版本(删除额外无关的条目和更改的名称): global daemon maxconn 4096 user haproxy group haproxy nbproc 4 defaults mode http timeout server 86400000 timeout connect 5000 log global #this frontend interface receives the incoming http requests frontend http-in mode http #process all requests made on port 80 bind *:80 #set a […]

php中filepointer的最大限制已经达到并且不可更改

我有一个服务器安装了当前的5.3.x版本。 由于我们使用套接字在php中运行一个非常简单的小型服务器,它使用套接字连接到很多客户端,因此我们需要提高打开的文件限制 已经在运行服务器的用户的服务器上完成 #ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 29879 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 8192 pipe size (512 bytes, -p) 8 POSIX message queues […]

如何在不停机的情况下部署WebSocket应用程序?

在没有停机的情况下部署HTTP应用程序并不困难:HTTP是无状态的,因此在2个HTTP应用程序前面的负载均衡器解决了这个问题。 如果两个应用程序使用通用后端来处理会话,一切都很好。 但是,WebSocket是一个有状态的协议。 这意味着如果closures应用程序,链接将被切断。 WebSocket是否可以无缝地重新连接,在这种情况下,负载均衡器就像使用HTTP应用程序一样处理这种情况? 如何在部署WebSocket应用程序时不发生停机?

nginx可以在接口websocket时设置'Origin'头部吗?

我们知道nginx可以从1.3.13版本开始代理WebSocket,而且我们也知道有些时候WebSocket服务器会authentication'Origin'头文件,所以有人说你可以这样做: proxy_set_header Origin ""; 渲染原始标题为空,但我testing它使用我的Wheezy框( nginx-extras包在backports中 ),并有一个负面的结果,服务器端仍然从客户端得到Origin头。 所以这里是一个问题:这一行不行,对吧?

如何在不中断服务的情况下部署Node.JS?

有一些博文和关于这方面的问题,但他们大多是从2010年或2011年,我希望有一个更新的(2014年代)的答案。 我有一个相当标准的Node.JS应用程序,运行Express,Socket.IO,Passenger等。我的生产服务器运行Ubuntu Server 12.04 LTS。 在高层次上,我的部署工作stream程大致是: 推/拉我更新的代码到我的生产服务器使用git 如有必要,运行任何构build脚本和/或安装新的依赖项 使用forever restart启动应用程序 Node.JS应用程序在端口8080上运行,并且我已经设置了iptables来将端口80的stream量转发到Node应用程序。 这个设置有一些问题。 最重要的是服务中断。 由于我的应用程序正在使用WebSocket,因此每当永远重新启动服务器时,所有连接的用户都将丢失其WebSockets会话。 Socket.IO会自动重新连接用户,但用户的会话信息不会转移到新的服务器实例。 另一个问题是error handling。 如果Node.JS服务器遇到一个不需要的exception(这是一个不幸的现实), 永远杀死并重新启动服务器,再次导致所有用户失去WebSockets会话。 使用PHP和Apache等传统技术部署的服务器没有这个问题,因为(如果我理解正确),每个连接都在自己的线程中运行,所以新的部署不会影响当前活动的用户,并且PHP只会破坏一个用户的会话,而不是为每个人查杀服务器。 那么,如何在不中断服务的情况下部署Node.JS,从而保持每个用户的会话呢?

Nmap外部扫描显示端口打开,ASA表示端口未打开,但是获取套接字

伙计们,有一个奇怪的,需要你的专家的帮助。 对于我们在审计中出现的大量使用的外部服务器,nmap -Pn扫描显示如下: Starting Nmap 5.51 … Host pub.ip is up (0.0032s latency). Not shown: 993 filtered ports PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 80/tcp open http 113/tcp closed auth 119/tcp open nntp 8008/tcp open http 8010/tcp open xmpp 现在这是一个公共的FTP / SFTP服务器,物理主机上的netstat / lsof确认只有端口21(ftp),22(ssh)和25(内部smtp)在监听。 ASA FWconfiguration显示它只允许从pub IP到ftp / ssh上的内部IP的NAT: static (dmz3,pub1) pub.ip […]

Nginx,HAproxy,Unicorn,Rails和Node设置

我们的应用程序目前只是一个“常规”的networking应用程序,没有喜欢streamHTTP或Websockets的花哨的东西。 它主要是一个Rails应用程序,由less数(20台机器上的20台) Unicorn工作服务器处理,由负责均衡的古老的nginx服务器代理。 过去一年来,这一切都非常顺利,现在每天在任何时候都可以提供400到800个请求 。 我们很快就会发布两个新的API,这两个API都是由一个Node应用程序提供的:一个是websocket,另一个是长轮询HTTP 。 (喜欢Twitterstream媒体API,HTTP连接永远不会结束)。 他们都使用节点上的同一个端口,由于节点应用是无状态的,所以我们当然可以部署其中的一些来处理stream量。 应用程序(节点)现在部署在5个实例中,现在正在侦听同一主机上的5个不同的“专用”端口。 我们需要在它们之前放置一些负载均衡,但也有一些能够处理套接字(websocket或HTTPstream式传输)的东西,这些套接字可以保持数天。 那么问题是:什么? 我在某处读到HAProxy比Nginx做得更好。 你有什么build议?

在x-accel-redirect响应之后使用Nginxcallback(或使用logging到套接字)

我的工作stream程如下: 接受请求 用ruby脚本做一些东西 发送x-accel-redirect头并返回 客户端收到数据… 客户端断开 < – 这里我想运行一些脚本 我需要的是:来自客户端的一些http头文件和由初始脚本发送的头文件。 我的第一个想法是parsing日志,但它可以很容易地打破。 其他选项将强制nginxlogin到一些自定义的守护进程或套接字。 或者在x-accel-redirect请求结束后使用一些callback。 问题是 :是否可以设置nginx(没有任何补丁)作为日志使用:syslog,自定义守护进程,套接字或从假文件读取一些守护进程。 或请求后设置一些callback?

python报告使用中的套接字,netstat和其他人声称没有

RHES3盒子有一个奇怪的套接字问题: Python 2.4.1 (#1, Jul 5 2005, 19:17:11) [GCC 3.2.3 20030502 (Red Hat Linux 3.2.3-52)] Type "help", "copyright", "credits" or "license" for more information. >>> import socket >>> s = socket.socket() >>> s.bind(('localhost',12351)) Traceback (most recent call last): File "<stdin>", line 1, in ? File "<string>", line 1, in bind socket.error: (98, 'Address already in […]