- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 React js 开发的新手,尝试将 WebSocket 集成到我的应用程序中。
但在连接期间发送消息时出现错误。
我的代码是
const url = `${wsApi}/ws/chat/${localStorage.getItem("sID")}/${id}/`;
const ws = new WebSocket(url);
ws.onopen = (e) => {
console.log("connect");
};
ws.onmessage = (e) => {
const msgRes = JSON.parse(e.data);
setTextMessage(msgRes.type);
// if (msgRes.success === true) {
// setApiMessagesResponse(msgRes);
// }
console.log(msgRes);
};
// apiMessagesList.push(apiMessagesResponse);
// console.log("message response", apiMessagesResponse);
ws.onclose = (e) => {
console.log("disconnect");
};
ws.onerror = (e) => {
console.log("error");
};
const handleSend = () => {
console.log(message);
ws.send(message);
};
得到这个错误
Failed to execute 'send' on 'WebSocket': Still in CONNECTING state
最佳答案
听起来您在套接字完成连接过程之前调用了 ws.send
。您需要等待 open
事件/回调,或根据 docs 检查 readyState
并在 readyState
更改后排队发送,即在 open
回调触发后。
不建议您这样做,但它可能会有所帮助:
const handleSend = () => {
if (ws.readyState === WebSocket.OPEN) {
ws.send()
} else {
// Queue a retry
setTimeout(() => { handleSend() }, 1000)
}
};
正如 Logan 提到的,我的第一个例子是懒惰的。我只是想让 OP 畅通无阻,我相信读者足够聪明,能够理解如何从那里获取它。因此,请确保适本地处理可用状态,例如,如果 readyState
是 WebSocket.CONNECTING
然后注册一个监听器:
const handleSend = () => {
if (ws.readyState === WebSocket.OPEN) {
ws.send()
} else if (ws.readyState == WebSocket.CONNECTING) {
// Wait for the open event, maybe do something with promises
// depending on your use case. I believe in you developer!
ws.addEventListener('open', () => handleSend())
} else {
// etc.
}
};
关于javascript - 无法在 'send' : Still in CONNECTING state 上执行 'WebSocket',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68303174/
最美好的承诺不是我爱你,而是我们以后一起过日子。最浪漫的话不是我爱你,而是你拿出戒指对我说,嫁给我吧。女生喜欢听好话,但是不喜欢对方只是说说而已。
我有两件事要解决,而且我是 django 和样式的新手:首先,我在上传文件上运行这个算法,并且加载需要时间,所以我想显示加载消息,直到生成 output.csv 并准备好下载(在执行 home 函数之
在this page底部的youtube视频上,屏幕截图很模糊,但是一旦您点击播放,就很清楚了。有没有办法解决这个问题? 最佳答案 好的,我认为我已经理解了这个问题...但是我不确定100%。 (您问
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 5 年前。 Improve this ques
我要为 Android 开发我的第一个应用程序(不用担心这只是一个学校项目,不会成为市场上另一个无用的应用程序:>)。 因此,在开始这项任务之前,我做了一些教程,其中之一(我认为它非常有用,因为有 s
#!/usr/bin/env python # -*- coding: utf8 -*- print "私" print u"私" 结果: ç§ UnicodeEncodeError: 'ascii'
在 CI 系统中,我使用 valgrind 运行一堆测试,如果 valgrind 没有发现错误,我期望返回值 0,否则返回 1。测试本身成功运行并返回 0。 这就是 error-exitcode 的用
我正在尝试使用 git fetch --all 但在获取某个存储库时它会给我错误。 error: There are still logs under '.git/logs/refs/remotes/
这是我写的代码,除了我不知道如何删除控制台东西(d:\)外,它工作得很好。代码在屏幕中间打印 hello。 IDEAL MODEL small STACK 100h DATASEG ; ---
我正在使用TTCPBlockSocket对于 TCP/IP 应用程序。问题是我无法确定连接何时丢失。 GetLastError 返回 0 读取返回0 但是即使应用程序已连接,我也会遇到这些值,因此我可
由于 Azure Bastion 服务提供了安全的可访问性,是否还需要跳转盒? Azure 中需要跳线盒的所有场景有哪些? 最佳答案 场景取决于您(或您的组织)的基本设计决策。 Azure Basti
我有以下示例结构: ... 我希望在点击 .modHolder 时发生一些事情,但在点击 #wData 时什么也不会发生。 这就是我正在尝试的,但 #wData 仍然对点击使用react: $
当我使用 { insertDefaultUI: false } 创建视频时,在完成 session 后尝试进行清理时,出现“未处理的拒绝错误:Chrome 仍在创建中”。断开连接()。 有什么想法吗.
我们得到了一些使用 SQL Server 数据库的单元测试。为了至少使每个测试装置唯一且独立于其他测试装置,我尝试在每个测试装置开始之前恢复数据库。每个测试都在其例程中打开和关闭连接和数据库。 在第一
我正在创建一个程序,需要从仍在写入的文件中读取。 主要问题是:如果使用在单独线程上运行的 InputStream 和 OutputStream 类执行读取和写入,有什么问题和问题为了防止数据损坏,我需
class Game { class Other {}; // Nested class // Automatic type conversion: operator Other() co
以下制作 position : fixed 的示例在我的 FF16.02/IE9 中不起作用。但据我所知,它应该是跨浏览器兼容的。有什么想法吗? JSfiddle of the issue 最佳答案
即使样式表被禁用,动态创建的表单也会呈现奇怪的。 表单根据选择的选项显示和隐藏范围广泛的详细信息。 因此,例如,下面的一些内容将使用 C#.net 呈现... formOutput += "" + f
在最近的一次采访中,有人问我这样的场景 #9这些关于将图像异步下载到表格 View 单元格中的常见面试问题。我理解在 cellForIndexPath 中异步调用它的必要性,但我对如何在异步调用完成后
所以就像我有一个包含大约 8 个选项的选择框。单击每个特定选项时,将显示一个我称之为“结果”的唯一文本。这很好用,除了在选择一个选项之后,之前的并且显示了我不想要的当前“结果”。 所以我的问题是如何创
我是一名优秀的程序员,十分优秀!