如何在JavaScript \ HTML中使用套接字?[关闭]


82

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

可能会使用一些很酷的HTML5?

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


1
你想做什么?您要支持哪种浏览器?
詹姆斯·布莱克

我假设您指的是Web套接字
okw

你是说TCP套接字吗?
AlikElzin-kilaka 2014年

Answers:


57

1
更新:bobince在此页面上提供了一个简单的教程:P
okw

3
是的,该用户可能是Kaazing自己的Jonas Jacobi。经常在提及WebSocket的任何地方弹出!我不太了解Kaazing TBH,他坐在websocket.org上推广似乎是一个单件的,并非实际上是免费的客户端和服务器解决方案,该解决方案具有WebSocket支持,但实际上只占其实际功能的很小一部分。我不知道,这可能是一个很好的解决方案,但是我对市场营销并不完全满意。[编辑,因此在okw的回复后]
bobince

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方面的规范还是网络传输的规范,都没有明确规定,并且没有浏览器支持。

但是,可以使用Flash(如果可用)为脚本提供后备功能,直到WebSocket广泛可用为止。Gimite的web-socket-js是这样的一个免费示例。但是,那时您与Flash Sockets受相同的限制,即您的服务器必须能够根据请求向套接字端口吐出跨域策略,并且代理/防火墙经常会遇到困难。(Flash套接字是直接制成的;对于没有直接公共IP访问权限的人,他们只能通过HTTP代理从网络中退出,它们将无法工作。)

除非您确实需要低延迟的双向通信,否则最好还是坚持一下XMLHttpRequest


html5支持哪些类型的WS绑定?
拉拉

如果您要说的是WebSocket对象在浏览器中的外观,仍然有待观察,但是规格(w3.org/TR/websockets)最近并没有太大变化。如果通过WS Bindings谈论的是Web服务,那么就没有:WebSocket不会谈论SOAP或任何其他预先存在的协议。
bobince

1
您说:“没有在JS或HTML中使用通用套接字的工具。这对一个人来说是一场安全灾难。” 但是phonegap或与phonegap相关的应用程序呢?标准浏览器不仅需要HTML + js。
obayhan

46

我认为必须要提到的是,由于这个问题已有1年的历史了,因此Socket.IO现已问世,它似乎是现在在浏览器中使用套接字的主要方式。据我所知,它还与Node.js兼容。


13
好。已经快六年了。标准有变化吗?
亚伦·埃绍
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.