如何给socket.io和node.js做的即时通信系统加上点对点文件传输功能?
发布于 10 年前 作者 gdut-zdc 15900 次浏览 最后一次编辑是 8 年前 来自 问答

很显然,利用socet.io和node.js可以 很方便要构建出一个 即时通信系统,但基本上网络上的例子都是传输文本消息,如果我们传输文件呢? (会加上mongodb数据库),如何做?求思路

8 回复

1、最简单的方式是客户端先把文件先上传到又拍云、七牛云,这样的云存储服务上。然后发送返回的http连接给其他客户端。 2、图片base64后发送。

@kurten 那这样即是转存啦,我想实现的是那种类似qq的文件传输功能,即时通讯。

  • WebRTC DataChannel 或者
  • Flash

首先要确定支持哪些平台,哪种浏览器。

那就用第二中,图片base64后,分段发送,接收后在把几段拼成一张图。 或者你直接把一张图片分成若干个数据块,然后一个一个发送。 服务端收到后边存边转发。

socket.io根本不是点对点,是服务器转发的,底层走的还是tcp,p2p一般用的是udp协议。

@einsy 虾…真的咩,我的课程设计要求是基于p2p的,还想着用nodejs+socket.io来做来着,看来泡汤了啊啊。有没有其它方法?

新版的socketio支持二进制传输,非文本文件也能传. 我还没试过,你可以看看官方文档

点对点有见过纯服务端实现么…异想天开, 充其量只能pipe

回到顶部