我正在寻找支持多个房间的websocket/node.js聊天实现.
我也打算写一个需要多个房间或服务器的应用程序,我只是在寻找人们如何做的代码示例.
谢谢.
我知道有一个服务http://pusherapp.com提供这项服务,但我正在寻找一个开源示例.
我正在使用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问题,所以我选择在这里发帖)
我已经尝试为具有p:poll视图层的基本社交网络和一个简单的NotificationService类实现基本通知系统,该类从DB获取新通知并刷新通知列表,NotificationBean其中每个用户都是视图编组.与此类似的流程:
-Poll calls NotificationBean.getNewNotifications for example every 15 sec.
--getNewNotifications calls NotificationService and DAO methods
---notificationList of user is refreshed
----DataTable on view layer shows new notifications
Run Code Online (Sandbox Code Playgroud)
但关注的p:poll是它的性能,因为它在每个间隔到期时发送一个查询.
PrimeFaces有PrimePush,基于Atmosphere Framework,它打开网络套接字,似乎更适合创建通知系统.
但我不知道应该使用哪些组件和属性.它有属性的p:socket组件channel.我应该使用用户名作为channel值吗?以下来自PrimeFaces的代码展示并总结了最后的句子:
<p:socket onMessage="handleMessage" channel="/notifications" />
Run Code Online (Sandbox Code Playgroud)
据我所知,从这个展示示例中,这会p:socket监听notifications频道.推送代码片段是:
PushContext pushContext = PushContextFactory.getDefault().getPushContext();
pushContext.push("/notifications", new FacesMessage(summary, detail));
Run Code Online (Sandbox Code Playgroud)
但这会通知所有用户页面,我需要一个通知特定用户的推送器.假设有2个用户并假设User1将User2添加为朋友.必须有某事.像那样:
pushContext.push("User2/notifications", new FacesMessage("friendship request", "from User1"));
Run Code Online (Sandbox Code Playgroud)
但我不确定这是否是这种功能要求的正确用法.考虑到应用程序的可扩展性,每个进程打开如此多的通道可能会产生昂贵的成本.
谢谢你的帮助.
我试图通过Node.js服务socket.io(http://socket.io/)向所有订户的某个子集广播消息.
更确切地说,我想使用用户可以订阅的频道,以便有效地将消息同时推送给几百个人.
我不确定addEvent('channel_name',x)是否可行.我没有在文档中找到任何内容.有任何想法吗?
谢谢你