javascript - Websocket 是否发送和接收完整消息?

标签 javascript python django websocket django-channels

我是网络开发新手,我正在尝试使用 python 和 django 编写一个简单的网络游戏。对于我的服务器,带有一些用于前端图形的 javascript。我正在使用channels包使用 websockets 进行通信,我有一个关于 websockets 的小问题。

在Python中,我知道当我们使用套接字时,不能保证消息被完全发送。例如,如果我在 python 中使用 socket.send ,我可能不会发送整个消息,在这种情况下我需要重新发送剩下的内容,并且在接收端,我不能保证得到使用socket.recv获取完整消息(假设bufsize参数对于完整消息来说足够大),所以我必须继续调用recv直到我收到了完整的消息。

我的问题是:这与 websockets 是否相同?

我尝试在MDN中寻找这个文档和谷歌,但我找不到任何相关信息。此外,我在网上看到的每个例子都没有考虑到这一点,所以看起来我用 socket.send (在 JavaScript 中)发送的内容正是我在另一端得到的,反之亦然反之亦然。

这是真的吗?我是否可以假设我在客户端使用 socket.send 发送的消息将在服务器端的一个事件中被完全接收(在我的例子中是 websocket consumer ),反之亦然:如果服务器向客户端发送一条消息,客户端是否会在 JavaScript 中的一个 Message 事件中完全接收该消息?

提前致谢。

最佳答案

您可以假设如果客户端已连接,就会收到该消息。反之亦然,服务器将接收它正在监听的消息。

Django Channel 确实不可靠。

在这些 channel 上调用 receive 并不能保证您将按顺序收到消息,或者如果 channel 非空,您将获得任何内容。

https://channels.readthedocs.io/en/latest/channel_layer_spec.html#channel-semantics

关于javascript - Websocket 是否发送和接收完整消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56914609/

相关文章:

Javascript IE 转换矩阵计算

javascript - 访问 JSON 对象数组的 JSON 元素

python - 从二维像素值数组创建灰度图像

python - 如何根据过滤后的总和合并两个 DataFrame?

python - TypeError : expected str, 字节或 os.PathLike 对象,而不是 ImageFieldFile

javascript - 如何在 Qualtrics 上使用 Javascript 控制播放哪些 mp3 文件?

javascript - 如何防止正则表达式匹配 javascript 中的所有其他匹配项

python - 根据另一列计算 groupby 中的百分比

python - Django-Parsley 不显示错误

javascript - 使用 base64 编码文本而不是 multipart/form-data 上传文件 - 好主意?