项目的要求是:如果任何用户更新记录(任何记录),必须立即通过在网页某处显示警报来通知所有相关方。在以前的项目中,浏览器会每隔N秒轮询服务器是否有任何相关的更改。
我一直在阅读网络套接字,认为这是解决这个问题的最佳方案(我不喜欢轮询)。
我对JavaEE中的Web套接字有一些问题。如果我错了,请纠正我。
- Web套接字似乎在Glassfish服务器上得到支持,而不是在最新版本的JBoss/Wardfly中
- 如果1000个客户端登录并使用Web套接字连接到服务器,那么服务器是否为每个连接打开了1000个单独的套接字?或者实现类似于Node.js,其中单个服务器套接字用于所有客户端连接。在JavaEE教程中,似乎没有任何地方记录这些信息
websocket是TCP连接,websocket协议只是TCP协议的升级,握手过程类似于http协议,但websocket是双向的。我认为Node.js中没有一个网络套接字。无论如何,每个登录的客户端都有一个连接。在Node.js中,您可以进行广播,但这与通过相关的web套接字向任何已登录的客户端发送消息相同。你在glassfish中也有同样的功能,你只需在所有的网络套接字上循环:
http://www.byteslounge.com/tutorials/java-ee-html5-websockets-with-multiple-clients-example
你也可以在weblogic中做同样的事情:
https://docs.oracle.com/middleware/1212/wls/WLPRG/websockets.htm#WLPRG872
这与没有任何包装的Node.js相同。