你好,我尝试传输文件。我有一些将文件转换为二进制并使用c++通过网络传输的程序。我想知道是否可以使用JavaScript和WebSockets传输文件?如果有如何将我的c++程序集成到JavaScript中的示例,将不胜感激。谢谢。
你好,我尝试传输文件。我有一些将文件转换为二进制并使用c++通过网络传输的程序。我想知道是否可以使用JavaScript和WebSockets传输文件?如果有如何将我的c++程序集成到JavaScript中的示例,将不胜感激。谢谢。
Javascript有两个新的二进制类型:类型化数组(arraybuffers)和Blob(基本上是文件)。
WebSockets支持发送和接收类型化数组和Blobs。
要在两个浏览器之间使用WebSockets传输数据,您需要一个服务器来连接它们(在此时,浏览器WebSocket支持仅限客户端)。
如果您有一个现有的C ++服务器处理文件传输,那么您应该可以很容易地向其添加WebSocket服务器支持。您可以在此页面找到WebSocket客户端和服务器实现:http://en.wikipedia.org/wiki/Comparison_of_WebSocket_implementations
在JavaScript中,要建立与WebSocket服务器的连接,您可以执行以下操作:
ws = new WebSocket("ws://100.101.102.103");
send()方法支持普通字符串、类型化数组或Blob。发送类型化数组和Blob将导致服务器接收到的帧作为二进制帧(opcode = 2)。
ws.send(myTypedArray);
要接收消息,您需要注册一个消息处理程序:
ws.onmessage = function (evt) {
console.log("Got ws message: " + evt.data);
};
如果服务器发送二进制帧/消息,则事件的onmessage数据属性将包含类型化数组或Blob,具体取决于binaryType属性的设置。您可以按照以下方式更改接收到的二进制数据的类型:
ws.binaryType = "blob"; // or "arraybuffer"