使用socket.io将图像发送到客户端

时间:2018-04-04 15:41:52

标签: node.js socket.io

建议使用socket.io将图像URL从服务器发送到客户端,然后在客户端,用户监听图像发出事件并显示在网页上吗?为什么我们需要在服务器端对图像进行base64编码,然后在您更容易向客户端发送图像URL时将其发送到客户端。 !

1 个答案:

答案 0 :(得分:0)

如果没有技术原因你不能只通过socket.io发送一个URL并拥有你的客户端代码然后创建一个图像对象并将.src设置为该URL以让浏览器获取图像通过URL的标准方式,那肯定是首选。当然,您必须确保Web服务器准备好在显示URL时提供该图像,并且如果该图像是该用户的唯一内容,则该URL也必须是唯一的。

这让浏览器可以使用它最优化的代码来下载二进制图像,让浏览器缓存它们,让代理等其他网络基础设施进行优化等等......

  

为什么我们需要对服务器端的图像进行base64编码,然后在您更容易向客户端发送图像URL时将其发送到客户端?

你没有。

例如,您可以在其中发送包含二进制数据的HTTP响应,您可以将content-type设置为某种二进制内容类型,然后将content-length设置为二进制数据的确切长度。以下是使用二进制数据的JPEG响应的最小示例:

HTTP/1.1 200 OK
Content-Length: 126750
Content-Type: image/jpeg

<binary image data here>

base64是一种在传输不接受二进制数据时发送二进制数据的方案。听起来你已经知道,它不如发送实际的二进制数据那么高效,因此当传输和接收者可以处理已知内容类型(如图像)的二进制数据时,通常首选二进制数据。