如何向UDP Node.js服务器发送UDP?

4
我很新手,不太明白如何操作,但我已经搭建了一个node.js udp服务器。我希望能从客户端(网站)向它发送数据包,但我不知道如何使用javascript发送/是否可行。我不是在寻找如何从node.js客户端向服务器发送数据包,而是想知道如何编写网站以向node.js udp服务器发送数据包。不确定这是否有意义,但感谢您的帮助!
2个回答

8

您可能会对这个教程感兴趣:

http://fzysqr.com/2011/02/28/nodechat-js-using-node-js-backbone-js-socket-io-and-redis-to-make-a-real-time-chat-app/

本文详细介绍了如何使用node.js创建聊天应用程序,甚至展示了如何使用Socket.io(一种浏览器js库)利用WebSockets实现实时、低延迟的响应。

正如Phihag所暗示的那样,UDP不适用于这种应用程序,因为UDP不能保证数据包到达目的地。在这种情况下,您肯定要使用TCP套接字。

更多阅读:


1
TCP并不保证你的数据包一定能到达目的地,但是TCP会告诉你何时到达了,而UDP则不会。 - Cosimo

7
您无法从Web浏览器(例如JavaScript)发送UDP数据包。您可以通过AJAX或websocket联系Web服务器,并执行服务器端程序(例如php或node.js等)来发送UDP数据包。您可以使用服务器端编程语言的原生套接字模块(Python, php, node.js)发送UDP数据包。
然而,您为什么首先要使用UDP?您将不得不处理重传、重新排序等问题,而且由于Web浏览器只能通过TCP通信,因此您无法获得UDP的任何优势。

1
那么我可以从Web浏览器进行TCP吗? - Derek
2
@Derek 对于一个聊天应用来说,我无法想象为什么要使用UDP而不是TCP。缺点包括:必须实现重新传输和排序(对于大型数据包也是必要的),甚至可能需要拥塞避免。使用TCP可以免费获得所有这些,并且在穿越防火墙时更容易。那么,为什么你要使用UDP而不是TCP呢? - phihag
2
@Derek 嗯,你可以使用WebSockets,这是你能够接近TCP的最佳选择。所有其他协议(基本上是轮询Web服务器以获取新闻)比那更抽象(与UDP相反),并且基于常规的HTTP,而HTTP则是基于TCP的。 - phihag
1
@l.cotonea 这是 Chrome 扩展程序的内部函数,而不是 Web 应用程序。在浏览器中允许任意 UDP 或 TCP 将导致暴露重大安全漏洞,因为任何 Web 应用程序现在都可以与您本地网络上的任何设备通信。 - phihag
...还有一个关于TCP和UDP Socket API的W3C草案(http://www.w3.org/TR/tcp-udp-sockets/)。也许再过几年吧... :) - l.cotonea
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接