通过网络套接字公开套接字
我有一台在端口 8181 上创建套接字的服务器。我想从 Google Chrome 14 中打开的网页访问该套接字。我认为直接方式是不可能的。 Chrome 提供对 Web 套接字的支持,但不支持标准套接字。是这样吗?
是否可以以某种方式创建一个中介,将我在端口 8181 上侦听的套接字服务器公开为在其他端口上运行的 Web 套接字服务器?
I have a server that creates a socket on port 8181. I would like to access that socket from a web page opened in Google Chrome 14. I suppose it is not possible in a straight manner. Chrome provides support for Web Sockets but not for standard sockets. Is that right?
Is is possible to somehow create an intermediary that would expose my socket server listening on port 8181 as a web socket server running on some other port?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
websockify 是一个通用的 WebSockets 到 TCP 套接字代理/桥接器。我创建 websockify 最初是为了允许 noVNC (HTML5 VNC 客户端)能够连接到未修补的 VNC 服务器。但它通常很有用(不是 VNC 特有的),所以我将它作为一个单独的项目分离出来。
在 UNIX/Linux 系统上,您将像这样运行 websockify:
上例中的端口 8080 是侦听 WebSocket 连接的端口。 my_server 是您的系统的名称/IP,您的服务器在端口 8181 上侦听。如果您在与服务器相同的系统上运行 websockify,那么您只需使用
localhost
代替 'my_server' 。websockify 项目还附带一个名为 websock.js 的 Javascript 包装器库。 websockify 支持新的协议版本(Chrome 14+ 和 Firefox 6+ 使用),但它也适用于旧版本。然而,对于旧版本的协议,无法发送原始二进制数据(仅 UTF-8),因此 websock.js 和 websockify 在使用时共同对数据进行 Base64 编码/解码(在浏览器和 websockify 之间)较旧的协议,以便您仍然可以向目标发送原始二进制数据或从目标发送原始二进制数据。
websockify is a generic WebSockets to TCP socket proxy/bridge. I created websockify originally to allow noVNC (HTML5 VNC client) to be able to connect to an unpatched VNC server. But it is generically useful (not VNC specific) so I spun it off as a separate project.
On a UNIX/Linux system you would run websockify like this:
Port 8080 in the above example is the port to listen for WebSocket connections. my_server is the name/IP of your system where you have a server listening on port 8181. If you are running websockify on the same system as your server then you can just use
localhost
in place of 'my_server'.The websockify project also comes with a Javascript wrapper library called websock.js. websockify supports the new protocol versions (used by Chrome 14+ and Firefox 6+) but it also works with older versions. However, with the older versions of the protocol there is no way to send raw binary data (only UTF-8), so websock.js and websockify work together to base64 encode/decode the data (between the browser and websockify) when using the older protocol so that you can still send raw binary data to/from the target.