通过 Web IM 传文件

 

Pushlets 实现了。保暖思淫欲, 现在我们要通过 Web IM 给其他用户传文件了。
这在我最新的框架 Eurasia3 中是非常容易的一件事情, 这里简单地描述一下原理。
当用户点击 "发送文件时", RIA 客户端在浏览器上生成一个上传文件的 "<Form>", 让用户选择上传的文件,
这样服务器就得到一个普通的文件上传请求, 通常的 CGI 会把文件保存在磁盘上以实现传统的上传功能。
但是这里, 我们并不把上传的文件放到磁盘上, 而是在内存中开出一个缓冲区,
当用户上传的内容达到缓冲区空间上限, 他的上行 IO 就阻塞了, 等待缓冲区重新可写。
与此同时, 服务器向接收文件的目标用户发送一个下载指令, 使他打开一个下载链接,
下载的内容即是从上传缓冲区中读取的, 当缓冲区读空, 用户的下行 IO 就阻塞了, 等待上传用户补充缓冲区。
这两者是同时进行的, 形成了一个生产消费模型。
其结果是, 服务器上并没有真实存在过这个文件, 它只要提供一个几百 K 的缓冲区就可以代理一次 Web IM 的文件传输请求。

 

出处:

http://eishn.blog.163.com/blog/static/6523182007290112332/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值