83

如何在 JavaScript\HTML 中使用套接字?

可能正在使用一些很酷的 HTML5?

图书馆?教程?博客文章?

4

3 回答 3

78

如何在 JavaScript/HTML 中使用套接字?

在 JS 或 HTML 中没有使用通用套接字的工具。对于一个人来说,这将是一场安全灾难。

HTML5中有WebSocket。客户端相当简单:

socket= new WebSocket('ws://www.example.com:8000/somesocket');
socket.onopen= function() {
    socket.send('hello');
};
socket.onmessage= function(s) {
    alert('got reply '+s);
};

您将需要在服务器端使用专门的套接字应用程序来获取连接并对其进行处理;这不是您通常会从 Web 服务器的脚本界面执行的操作。然而它是一个相对简单的协议;我点头的基于 Python SocketServer 的端点只有几页代码。

无论如何,它还不存在。JavaScript 端规范和网络传输规范都没有确定下来,也没有浏览器支持它。

但是,在 WebSocket 广泛可用之前,您可以在可用的情况下使用 Flash 为您的脚本提供备用。Gimite 的web-socket-js就是一个免费的例子。但是,您受到与 Flash Sockets 相同的限制,即您的服务器必须能够根据对套接字端口的请求发出跨域策略,并且您通常会遇到代理/防火墙的困难。(Flash 套接字是直接制作的;对于没有直接公共 IP 访问权限的人只能通过 HTTP 代理离开网络,它们将无法工作。)

除非你真的需要低延迟的双向通信,否则你最好暂时坚持XMLHttpRequest

于 2009-11-15T03:01:29.723 回答
57

规格:

文章:

教程:

图书馆:

于 2009-11-15T02:48:16.680 回答
46

我认为值得一提的是,现在这个问题已经存在一年多了,Socket.IO已经问世,并且似乎是现在在浏览器中使用套接字的主要方式;据我所知,它也与Node.js兼容。

于 2011-02-25T18:08:17.100 回答