我写了一个代码,用于向所有用户广播消息:
二手代码:( 简要)
// websocket and http servers
var webSocketServer = require('websocket').server;
...
...
var clients = [ ];
var server = http.createServer(function(request, response) {
// Not important for us. We're writing WebSocket server, not HTTP server
});
server.listen(webSocketsServerPort, function() {
...
});
var wsServer = new webSocketServer({
// WebSocket server is tied to a HTTP server.
httpServer: server
});
// This callback function is called every time someone
// tries to connect to the WebSocket server
wsServer.on('request', …Run Code Online (Sandbox Code Playgroud) 我正在使用HAProxy将子域上的请求发送到node.js应用程序.
我无法让WebSockets工作.到目前为止,我只能让客户端建立WebSocket连接,但之后很快就会出现断开连接.
我在ubuntu上.我一直在使用的各种版本socket.io和node-websocket-server.客户端是Safari或Chrome的最新版本.HAProxy版本是1.4.8
这是我的HAProxy.cfg
global
maxconn 4096
pidfile /var/run/haproxy.pid
daemon
defaults
mode http
maxconn 2000
option http-server-close
option http-pretend-keepalive
contimeout 5000
clitimeout 50000
srvtimeout 50000
frontend HTTP_PROXY
bind *:80
timeout client 86400000
#default server
default_backend NGINX_SERVERS
#node server
acl host_node_sockettest hdr_beg(host) -i mysubdomain.mydomain
use_backend NODE_SOCKETTEST_SERVERS if host_node_sockettest
backend NGINX_SERVERS
server THIS_NGINX_SERVER 127.0.0.1:8081
backend NODE_SOCKETTEST_SERVERS
timeout queue 5000
timeout server 86400000
server THIS_NODE_SERVER localhost:8180 maxconn 200 check
Run Code Online (Sandbox Code Playgroud)
我已经浏览了网络和邮件列表但无法获得任何建议的解决方案.
(ps这可能是针对serverfault,但是还有其他的HAProxy问题,所以我选择在这里发帖)
我见过多个使用node.js和facebook connect的工具.然而,其中许多似乎不完整,过于复杂(非抽象)或不再更新/维护.
我发现了这三个项目:
https://github.com/DracoBlue/node-facebook-client
https://github.com/dominiek/node-facebook
https://github.com/egorFiNE/facebook-connect
https://github.com/ciaranj/node-oauth
其中一位作者甚至讨论了为什么他再次推出自己的,由于其他实现中的缺点:
http://groups.google.com/group/nodejs/browse_thread/thread/bb46cb08e51fdda6
有没有人有任何真正的经验实际验证用户和使用node.js和facebook连接将他们的facebook id存储在他们的数据库中?
我觉得答案几乎没有,我将不得不建立在上述系统之一的基础上,以使事情变得更简单,但我想先检查一下.
编辑:注意确保使用node.js的STABLE版本
node.js可伸缩,是什么意思?node.js服务器的哪个部分是可伸缩的.我读到它是一种单线程技术,不适合需要大量CPU资源的应用程序.这些事实不符合可伸缩性,那是什么意思呢?
我正在为Acani编写一个聊天服务器,我有一些关于Scaling node.js和websockets以及负载均衡器可扩展性的问题.
Node.js负载均衡到底意味着什么?这是否意味着我的服务器应用程序将运行n个独立版本,每个版本都在一个单独的服务器上?
为了允许一个客户端向所有其他客户端广播消息,我webSocketConnections在服务器上存储了一组已打开的消息.但是,如果我有ñ我的服务器应用程序运行的独立版本,每一个单独的服务器上,然后将我ñ套不同的webSocketConnections?
如果1和2的答案是肯定的,那么如何存储一套通用的webSocketConnections(跨所有服务器)?我认为我可以做到这一点的一种方法是使用Redis Pub/Sub,只需让每个webSocketConnection订阅Redis上的频道.
但是,那么,单个Redis服务器不会成为瓶颈吗?然后我如何缩放Redis?扩展Redis甚至意味着什么?这是否意味着我有中号在不同的服务器上运行的Redis的独立版本?这甚至可能吗?
我听说Redis没有扩展.有人会这么说.那是什么意思?如果这是真的,对于pub/sub和/或存储所有广播消息的列表是否有更好的解决方案?
注意:如果你的答案是Acani永远不必扩展,即使地球上所有70亿人(并且正在增长)中的每一个人每秒都向地球上的其他人广播一条消息,那么请给出有效的解释.