通过WebSocket使用javascript传输文件

通过WebSocket使用javascript传输文件,javascript,html,websocket,Javascript,Html,Websocket,你好,我正在传送文件。我有一些程序将文件转换成二进制文件,并用C++在网络上传输它们。我想知道我是否能够用javascripts和WebSocket传输文件?关于如何将我的C++程序集成到JavaScript中的任何例子,将不胜感激。谢谢。你想做的是不可能的。WebSocket只能在客户端模式下运行;它无法接受来自其他WebSocket客户端(如其他浏览器)的连接 可以通过服务器将WebSocket客户机相互连接,但此时它不再是真正的点对点,因此我不确定这是否真的有用或有趣 请参阅:Javasc

你好,我正在传送文件。我有一些程序将文件转换成二进制文件,并用C++在网络上传输它们。我想知道我是否能够用javascripts和WebSocket传输文件?关于如何将我的C++程序集成到JavaScript中的任何例子,将不胜感激。谢谢。

你想做的是不可能的。WebSocket只能在客户端模式下运行;它无法接受来自其他WebSocket客户端(如其他浏览器)的连接

可以通过服务器将WebSocket客户机相互连接,但此时它不再是真正的点对点,因此我不确定这是否真的有用或有趣


请参阅:

Javascript有两种新的二进制类型:类型化数组(arraybuffers)和blob(基本上是文件)

WebSocket支持发送和接收类型化数组和blob

要使用WebSocket在两个浏览器之间传输数据,您需要一个服务器,以便两个浏览器都连接到(此时浏览器WebSocket支持仅限于客户端)

如果C++中有一个现有的服务器来处理文件传输,那么您应该能够很容易地添加WebSocket服务器支持。您可以在此页面上找到WebSocket客户端和服务器实现:

在JavaScript中,要建立到WebSocket服务器的连接,请执行以下操作:

ws = new WebSocket("ws://100.101.102.103");
ws.binaryType = "blob"; // or "arraybuffer"
send()方法支持普通字符串、类型化数组或blob。发送类型化数组和blob将导致服务器接收的帧作为二进制帧(操作码=2)

要接收消息,请注册消息处理程序:

ws.onmessage = function (evt) {
    console.log("Got ws message: " + evt.data);
};
如果服务器发送二进制帧/消息,则事件的onmessage数据属性将包含类型化数组或blob,具体取决于binaryType属性的设置。您可以更改接收的二进制数据的类型,如下所示:

ws = new WebSocket("ws://100.101.102.103");
ws.binaryType = "blob"; // or "arraybuffer"

谢谢,如果您能提供有关如何通过服务器执行此操作的示例,将不胜感激。=)如果可能的话,我也很感兴趣。