socket.io 的最佳 Java 服务器实现
Posted
技术标签:
【中文标题】socket.io 的最佳 Java 服务器实现【英文标题】:Best java server implementation for socket.io 【发布时间】:2013-03-12 05:06:18 【问题描述】:我想使用socket.io将数据从服务器推送到浏览器,但项目是java tomcat之一,Github中有很多实现socket.io
的服务器实现。他们中的大多数人说它们已已弃用或有更好的可用。谁能建议我一个好的实现。
我看到很多关于使用socket.io
广播的演示和示例代码。我的要求是将不同的消息推送给不同的客户端。有人可以指点我一些处理这些东西的好演示或教程吗?
谢谢
【问题讨论】:
只要寻找socket-io的java实现有很多,但是它们对许多容器的支持并不好。所以我选择的是大气,它给你选择使用 socket io 作为 lirary 或他们的和其他一些,它确实支持大多数容器。这似乎是一个积极开发的项目,我会向任何在 java 中做彗星的情况推荐它跨度> how to implement Socket.io on Tomcat 7的可能重复 【参考方案1】:作为作者,我建议在 Java 上尝试我的 SocketIO 服务器实现:
https://github.com/mrniko/netty-socketio
稳定且可用于生产的库。
【讨论】:
Netty-socketio 创建自己的服务器,或者我可以在 Tomcat 应用程序中使用它,例如? @NikitaKoksharov 嗨,有没有关于 netty-socketio 的正式文档可供我在围绕它构建软件时用作参考? Nikita 感谢库,花了几分钟让一切都为我工作,我希望更多的人知道如何设计像你这样的东西...... 你用过Atmosphere Framework吗?比较如何? @NikitaKoksharov 我可以使用基于 Netty-socketio 框架 EndPoint 的实现吗?【参考方案2】:我们在生产中使用这个:Socket.IO-Java。我们已经根据我们的要求对其进行了定制。但在主要情况下,它已经足够好了。
我的同事在github 分享了定制版本。我们使用的是 Jetty 8,另一个 servlet 容器可能会出现一些问题。此外,当 Microsoft 不支持 XP 时,我们会考虑仅使用 WebSocket 实现。
【讨论】:
嘿,感谢您的回答,我确实检查了许多这些 Java 后端。但它们中的大多数都特定于某些容器,例如您指出的用于码头的容器。所以我选择了与气氛一起使用 链接已失效。你能在某处分享你的定制版本吗? (也许是github)该项目的文档说它已被放弃,您的更改可能是它所缺少的:) @naugtur 我已经添加了回购链接【参考方案3】:你可以试试这个:https://github.com/codeminders/socket.io-server-java
此实现大致基于其他答案中提到的旧 Socket.IO-Java 库。
它支持 Socket.IO 1.0+ 客户端。 websocket 传输是使用 Jetty 9 实现的,但库的核心部分不依赖于 Jetty。 如果需要,用 Tomcat 实现 websocket 传输应该不是很困难。
我尝试保持 API 类似于 Node.JS Socket.IO 服务器 API。因此,要向特定套接字发送消息,您只需调用socket.emit()
下面是要在 SocketIO servlet 中调用的小代码片段:
on(new ConnectionListener()
public void onConnect(Socket socket)
try
socket.emit("welcome", "Welcome to Socket.IO Chat!");
catch (SocketIOException e)
socket.disconnect(true);
);
【讨论】:
兼容ios和android socket io客户端吗?以上是关于socket.io 的最佳 Java 服务器实现的主要内容,如果未能解决你的问题,请参考以下文章
在 ExpressJS 中将 socket.io 实现为子模块的最佳方法是啥?
使用node.js实现多人聊天室(socket.ioB/S)
ReactJS + Socket.IO - 处理套接字连接的最佳方式
构建 Node.js 和 Socket.io 应用程序的最佳实践?