通过 websocket 使用 javascript 传输文件

2024-03-11

你好,我正在尝试传输文件。我有一些程序将文件转换为二进制并使用 C++ 通过网络传输它们。我想知道我是否能够使用 javascript 和 websocket 传输文件?任何有关如何将我的 C++ 程序集成到 JavaScript 中的示例将不胜感激。谢谢。


Javascript 有两种新的二进制类型:类型化数组(数组缓冲区)和 Blob(基本上是文件)。

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

要使用 WebSocket 在两个浏览器之间传输数据,您需要一个服务器供它们连接(此时浏览器 WebSocket 支持仅是客户端)。

如果您有一个用 C++ 编写的现有服务器来处理文件传输,那么您应该能够相当轻松地向其添加 WebSocket 服务器支持。您可以在此页面上找到 WebSocket 客户端和服务器实现:http://en.wikipedia.org/wiki/Comparison_of_WebSocket_implementations http://en.wikipedia.org/wiki/Comparison_of_WebSocket_implementations

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

ws = new WebSocket("ws://100.101.102.103");

send() 方法支持普通字符串、类型化数组或 blob。发送类型化数组和 blob 将导致服务器以二进制帧形式接收帧(操作码 = 2)。

ws.send(myTypedArray);

要接收消息,您需要注册一个消息处理程序:

ws.onmessage = function (evt) {
    console.log("Got ws message: " + evt.data);
};

如果服务器发送二进制帧/消息,则事件的 onmessage 数据属性将包含类型化数组或 blob,具体取决于 binaryType 属性的设置。您可以更改接收的二进制数据的类型,如下所示:

ws.binaryType = "blob"; // or "arraybuffer"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 websocket 使用 javascript 传输文件 的相关文章

随机推荐

  • 在python中获取方阵的上三角形或下三角形的所有元素

    numpy scipy 中是否有一个函数可以返回方阵的一个三角形 上或下 的所有元素 e g matrix 1 2 3 4 5 6 7 8 9 三角形 上 下 up 1 2 3 5 6 9 down 1 4 5 7 8 9 or up 1
  • 如何使画布文本可选择?

    任何建议都将受到高度赞赏 文本选择有很多组成部分 有些是视觉的 有些是非视觉的 首先 使文本可选择 您必须保留一个数组 其中包含文本的位置 文本是什么以及使用的字体 您将通过 Canvas 函数measureText 使用此信息 通过使用m
  • Elasticsearch:从索引中删除重复项

    我有一个包含多个重复条目的索引 它们具有不同的 id 但其他字段具有相同的内容 例如 id 1 content content1 id 2 content content1 id 3 content content2 id 4 conten
  • 使用 Func 时如何调用 invoke

    在函数中Test Func
  • 在 Akka 中等待多个结果

    在 Akka 中等待多个 actor 结果的正确方法是什么 The 反应式编程原理 https www coursera org course reactiveCoursera 课程有一个使用复制键值存储的练习 在不详细讨论分配的细节的情况
  • Paypal Express 沙箱访问被拒绝

    我正在尝试使用 Paypal 沙箱 API 并得到此响应 Access Denied You don t have permission to access http api 3t sandbox paypal com nvp on thi
  • WCF:如何将多个服务组合到单个 WSDL 中

    在我的 ASP NET WebForms 项目中 我引用了 WCF 服务库项目 其中包含针对每个业务对象的不同 WCF 服务 这些服务托管在 IIS 中 并且可以通过我在 Global asax 中定义的路由获取 WSDL 每个服务通过一个
  • postgres 关系中的 ALTER TYPE 错误不存在

    使用以下内容 CREATE TYPE user types AS ENUM it accounting processes CREATE TABLE my users my user id integer NOT NULL my user
  • GPUImage imageFromCurrentFramebuffer 有时为 GPUImageLookupFilter 及其子类返回 nil

    我一直在使用GPUImage对于我的项目 我遇到了这个问题imageFromCurrentFramebuffer对于某些返回 nilGPUImageLookupFilter s 我子类化了GPUImageFilterGroup就像在GPUI
  • 使用 ASP.NET 和 MVC 3,如何创建隐藏字段,以便正确绑定以数组作为列表中每个项目的值的列表?

    我有一个查询语句列表 当需要在末尾添加另一个语句时 需要将这些查询语句发回 MVC 控制器 对于我现在尝试创建的测试 页面以过滤器列表开头 执行此示例时 页面将为过滤器创建字段 如下所示
  • 缩放时更改 ImageView 的大小

    我正在使用 chrisbanes PhotoView 来实现捏缩放 图像在捏和双击时缩放 但我看不到图像在缩放时拉伸到全屏 在缩放时 看起来图像在框内缩放并且部分图像消失关于缩放 我如何实现图像缩放 以便图像的高度在缩放时增加 我正在使用
  • 如何为javascript接口配置proguard?

    我已经实现了一个使用 JavascriptInterface 的 Webview 当不进行混淆时它工作得很好 但是一旦 Proguard 处于活动状态 它就不起作用了 我在这里查看了其他答案 但仍然无法使其正常工作 一些WebView类 p
  • 更改 Android 中的 MAC 地址

    我正在尝试更改已 root 的 Note 2 Android 设备的 Mac 地址 我做了以下事情 busybox ifconfig wlan0 关闭 busybox ifconfig wlan0 硬件以太 00 11 22 33 44 5
  • Rails 4 simple_form owns_to 关联未定义方法错误

    使用 Rails 4 当我想从对象 Document Document 渲染表单 使用 simple form 时 出现以下错误 undefined method document type id for
  • 搜索结果 url 中的 django csrf_token

    搜索结果 url 中有 csrf 不知道为什么会存在以及如何删除它 搜索效果很好 这是网址 search csrfmiddlewaretoken 675d1340034e094866d15a921407e3fc q testing 这是视图
  • 可靠的全双工串行通信

    我正在设计一种设备 它将加密从 PC 发送的长 假设无限 数据流并将其发回 我计划在运行全双工的设备上使用单个串行端口 并通过硬件握手来 阻止 数据 在每个块后发送一个 CRC 值 该设备只会缓冲有限数量的块 理想情况下 只有一个缓冲区累积
  • 是否可以在 OSX 中检测 Power Nap / DarkWake 模式

    我有一个通过 launchd 启动的守护进程 即使在 DarkWake 期间 它也会运行 并且在 OS X 再次返回睡眠状态之前没有时间完成 我可以想到以下解决方案 但没有找到实现此目的的方法 不要让该守护进程在 DarkWake 期间运行
  • Ropemacs 使用教程

    有很多网站都有相关说明安装Ropemacs 但到目前为止我找不到任何有关如何操作的说明use安装完成后即可 我已经安装了它 或者至少看起来是这样 Emacs 在其顶部菜单栏中有 Rope 菜单 怎么办 到目前为止 我只能使用 显示文档 默认
  • Docker 中的非 root 用户

    我有一个基本的 Dockerfile FROM ubuntu xenial USER test ENTRYPOINT bin bash 对于这个 Dockerfile 我希望能够创建一个没有密码的用户 并且当 Docker 容器运行时 我希
  • 通过 websocket 使用 javascript 传输文件

    你好 我正在尝试传输文件 我有一些程序将文件转换为二进制并使用 C 通过网络传输它们 我想知道我是否能够使用 javascript 和 websocket 传输文件 任何有关如何将我的 C 程序集成到 JavaScript 中的示例将不胜感