当前位置: 首页 > 面试题库 >

Java + NodeJS通过套接字通信:不好的主意?

鲜于念
2023-03-14
问题内容

我喜欢NodeJS的某些功能,特别是JQuerification,通过socket.io的websocket兼容性,我不能与JSP一起使用的视图和CSS引擎(当然还有异步调用)。至少据我所知。因此,我计划在后端为Java的情况下创建应用程序,前端由NodeJS生成。前端表单将数据发送到NodeJS,后者将通过NodeJS和Java后端之间的套接字连接将其传递到Java后端。因此,NodeJS基本上就像前端和Java后端之间的中间件。

这将是一个非常大的应用程序,我的计划看起来很令人兴奋,但是我会因为走这条路而讨厌自己的未来吗?

我这样做的好处是,我可以拥有很多实时图表和仪表板,并增强与表单的交互。


问题答案:

问题是您谈论的是通用平台。Node.JS作为前端,JAVA作为后端。根据您的实际需求,这可能是奇妙的,也可能是可怕的。

所以呢?人们是否愿意使用成熟技术(或其他原因)会做出回应。

炒作

人们认为node.js的主要原因是炒作。像几年前的XML数据库。XML很酷,一切都必须用XML来完成…如果您注意到,没有人再谈论XML数据库了。

因此,node.js是新的,而您附近的博客则在谈论它,并与NoSQL数据库一起完美匹配。

异步IO

然后是诸如异步IO之类的理由。你懂?POSIX标准中的内容可能已存在20多年了。是的,您在学校的C课程中学到了什么。顺便说一句,标准的JAVA
API也支持它。实际上,如果您收听node.js创建者,那么这并不是一个新概念,而仅使用异步库。那里的大多数库都使用线程模型,不能用于异步。Java本身并不是目标,但是JS中缺少任何标准库是一个很好的起点,因为它可以避免普通的joe通过包含错误的库而弄乱一切。那个不是我说的。

关键是现在有一些库,但是有一些由公司支持的库。我们仍然不在那里。同时,标准的专业框架已经在需要时支持异步行为,例如长轮询HTTP请求。请参阅Lift框架,请参阅Jetty或Tomcat对NIO的支持。

像XML数据库一样。现在,像Oracle这样的专业数据库确实支持XML。因此,如果您需要它,则可以保留标准的高性能数据库…以及只能执行此操作的专用解决方案…甚至没人记得它的名字。

Java脚本

现在使用javascript。Javascript是一个大胆的选择…由于缺少库。您知道仍然缺少什么。那就是为什么仍然需要Java后端的原因!但不仅如此…
IDE对javascript的支持也不是很好。自动完成?勉强工作。重构?你在开玩笑吗?多线程?不。node.js就像Windows
3.1一样。它使用协作式多任务处理。

结论

Node.js很有趣,但是还不成熟。您自己说过,必须选择Java才能进行诸如连接数据库之类的实际工作。该堆栈增加了另一层的复杂性。

要么您真的需要它,要么这是一个不错的折衷方案……要么您不需要它,要么只是取悦自己……然后在您看到自己花更多的时间做所有事情时恨自己……只是说您具有4层堆栈(浏览器,Node.js,JAVA,DB),而不是3层。仅出于宣传和令人愉悦的理论。



 类似资料:
  • 问题内容: 我正在考虑AJAX应用程序必须轮询轮询更新有多大限制,而最理想的是javascript能够建立与服务器的真正双向连接。我想知道是否存在将javascript与可以建立tcp连接的浏览器插件集成的方法,以便可以将数据传入和传出浏览器插件。 问题答案: 这是具有类似方法的实现: 套接字 它使用Java Applet,并将其API桥接到JavaScript,有趣的是… 这里是另一个: 套接字

  • 问题内容: 我正在使用多个聊天服务器(nodeJS)和一个Redis服务器制作聊天应用程序,这应该有助于对所有nodeJS实例进行分组。好吧,我有这个: Redis运行正常,如果我在同一服务器上有两个用户,他们可以聊天。但是,如果它们在不同的服务器上,则不能,因为套接字不在服务器之间共享。我该如何解决?我检查了关于redis上的pub / sub的信息,我敢肯定这是答案,但我没有设法实现它。 问题

  • 我试图建立一个多人游戏与游戏服务器运行最多4个客户端,使用java套接字和ServerSocket。在此代码中,我将客户端的数量限制在1个,并对播放器和服务器使用阻塞I/O模型。 游戏服务器线程(实现Runnable)使用套接字输入流从每个客户端接收“Snake object to Snake[i]”和“char变量to DirInput”,并使用套接字输出流发送“Snake object Arr

  • 我想找个人来澄清一个我相信我有的误解。我在读Java上的套接字编程,并不真正理解事情的实际流程是什么。以下是我对以下场景的两种可能的解释。 创建套接字实例 null 服务器接受客户端之后的连接会是这样的吗?(客户端与服务器创建的套接字通信,而不是与服务器套接字通信) 或者图表会像这样吗?(客户端通过ServerSocket与服务器保持通信。服务器通过接受连接时创建的套接字进行通信。)

  • 问题内容: 我创建了一个服务器应用程序,该应用程序从客户端接收声音,然后广播此声音,该声音以字节存储,然后将字节发送回连接到服务器的客户端。现在,我目前仅使用一个客户端进行测试,客户端正在接收语音,但是声音一直在卡顿。有人可以告诉我我做错了吗? 我想我理解为什么声音播放不流畅但不了解如何解决问题的部分原因。 代码是波纹管的。 客户端: 将声音发送到服务器的部分 从服务器接收数据字节的部分 问题答案

  • 问题内容: 我正在使用Java应用程序,需要通过套接字连接尽快将500,000个整数的数组从一台Android手机发送到另一台Android手机。无论是使用ObjectOutputStreams,ByteBuffers还是低级的掩码和移位转换,主要的瓶颈似乎都是在转换整数,以便套接字可以使用它们。通过套接字从一个Java应用程序向另一个Java应用程序发送int []的最快方法是什么? 这是到目前