关于js的websock 和 java sock 之间的一些感悟。

本文探讨了JavaScript的WebSocket与Java Socket在处理大数据传输时的不同表现。通过对比两种技术接收4,096,000字节数据的方式,揭示了它们在数据处理逻辑上的差异。JavaScript中的WebSocket在接收每4,096字节数据时会触发一次事件处理,而Java Socket则采用阻塞方式读取完整数据块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js 的websocket 中的 onmessage 方法是在每次 接受到请求 或者是消息的时候就会进行接下来的调用。

而我们有这样的场景。

同样的服务器后台进行发送 4,096,000 bytes 的数据进行发送到前端客户端。每次只发送 4096bytes


有两种客户端 一种是 js 同websocket 写的 ,第二种是 用java  socket 写的。

现在假设 我们只要在前端在 读取 40,960 bytes 后就要随便执行一次 1+1;

如果是 java socket 的话,假设我们 inputstream 相应的实现类当中有一个方法叫 read40960()的方法。

那么伪代码如下:

in.read40960();
1 + 1;


这样的代码。就会因为 read40960()会阻塞等到。inputstream 的流当中有 40960 bytes 才会进行下一步的1+1的代码

那么一共计算得到 java 只会执行 1 + 1 的代码 100次

但是 如果是js 用 websocket进行 接收的话。因为每次发送 4096 就会调用一次

全部的两行代码。所以在js 中就会被调用 1000次。

可能如果有人会说。进行缓存判断

var buff ;
buff += in.read();
if(buff ==40960){
 1+1
}

这样 1+ 1不就只执行了 100次吗?

其实我这篇文章的重点不是 1 + 1 执行了多少次。而是在于 js 中的 没有java 中流进行阻塞的概念。js只会不断的根据逻辑判断避免,每次接收到请求的时候都会执行一遍逻辑代码。

加上js 是单线程 的,这样可能造成的时候就是 你执行1000此的简单逻辑判断,虽然每次只花了1毫秒,1000次就是1秒钟。

这样的设计,当你在做视频播放的时候可能就会出现问题。只有在1秒刷新一张图片,那是体验非常不好的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值