Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当websocket服务器在线时,button.onclick无法工作

当websocket服务器在线时,button.onclick无法工作
EN

Stack Overflow用户
提问于 2021-05-08 10:45:06
回答 2查看 186关注 0票数 1

这很奇怪,我有一个前端js文件和一个html文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const conn = new WebSocket('ws://localhost:8000');
const main = document.querySelector('.main');
const send = document.querySelector('#send');
const text = document.querySelector('#text');

conn.onopen = () => {
  console.log('connetion open');
  conn.send('heyya');
}

conn.onmessage = message => main.innerHTML += message.data;

conn.onerror = error => console.log('web socket not available');

send.addEventListener('click', e => {
  console.log('send');
})
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script defer src="app.js"></script>
</head>

<body>
  <div class="main">
    <input type="text" name="" id="text">
    <button id="send">Send</button>
  </div>
</body>

</html>

每当websocket启动并运行时,单击send按钮什么也不做,变量send似乎并不是指html中的send按钮。但只要websocket离线,发送按钮就能正常工作。

是打字错误,还是我的其他错误,还是JS的什么问题?

EN

回答 2

Stack Overflow用户

发布于 2021-05-08 11:02:36

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
conn.onmessage = message => main.innerHTML += message.data;

等于

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
main.innerHTML = main.innerHTML + message.data

会毁掉里面的一切并重新创造它。当这种情况发生时,事件绑定就消失了。您应该使用像appendChild这样的方法,或者您可以添加一个新元素来向其中注入新消息,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<body>
  <div class="main">
    <input type="text" name="" id="text">
    <button id="send">Send</button>
    <ul id="messages"></ul>
  </div>
</body>
票数 2
EN

Stack Overflow用户

发布于 2021-05-08 11:11:27

我注意到你需要改进的一件事是:-在WebSocket上发送数据时使用conn.send(JSON.stringify('heyya'))

并在接收时执行相同的操作:- JSON.parse(message),然后以您想要的方式使用"message“。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67446665

复制
相关文章
在线websocket调试
分享一个在线websocket测试网站: http://coolaf.com/tool/chattest 我在进行websocket测试时使用了一下,感觉还可以 把上面的地址换成你自己的,点击连接就可以发送了 旁边还提供了在线POST和GET请求调试之类的常用工具,非常方便
阿超
2022/08/21
3.1K0
在线websocket调试
websocket 在线工具_websocket添加请求头
Websocket在线模拟请求工具:支持内网和外网Websocket测试 连接格式为 ws://IP或域名:端口(示例ws://127.0.0.1:8080)
全栈程序员站长
2022/09/20
5.4K0
websocket 在线工具_websocket添加请求头
当集合名称带有特殊字符时,无法从mongodb删除集合
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/290
joshua317
2022/12/09
7010
WebSocket实现在线聊天
“ 这一篇文章前面部分我们会先介绍WebSocket协议的基本知识,在最后我们会用Spring Boot来集成WebSocket实现一个简单的在线聊天功能,我们也可以跨过前面的介绍直接看集成部分,后续在慢慢研究WebSocket。”
每天学Java
2020/06/02
4.2K5
js 推断 当页面无法回退时(history.go(-1)),关闭网页[通俗易懂]
在做一个Web项目时遇到一个需求,当页面没有前驱历史记录时(就是当前为新弹出的页面,没法做goback操作即history.go(-1)),点击返回button时直接关闭页面,否则就退回到前一页。
全栈程序员站长
2022/07/08
3.1K0
当AI泡沫破裂时……
很显然我们目前处于一个不稳定的状态。这到底是一场泡沫还是一次革命?答案是当然包含一点革命——深度神经架构所创造的实实在在的成功已经颠覆了视觉和语音识别领域,更通用的机器学习也已经有了大量真实世界用例。
机器之心
2018/07/26
3760
当AI泡沫破裂时……
很显然我们目前处于一个不稳定的状态。这到底是一场泡沫还是一次革命?答案是当然包含一点革命——深度神经架构所创造的实实在在的成功已经颠覆了视觉和语音识别领域,更通用的机器学习也已经有了大量真实世界用例。
刀刀老高
2018/07/24
3600
在线视频的工作原理 在线视频平台选择服务器方法
随着人们生活质量的飞速发展,越来越多的人喜欢待在家里去体验网络世界发展所带来的“红利”。很多人选择在家中通过在线观看视频来体验人世间的爱恨情仇、体验社会百态。毫无疑问,在线视频在其中起到了十分重要的作用。那么在线视频的工作原理是什么?在线观看视频网站又如何选择好的服务器呢?下面就来为大家介绍一下。
用户8739990
2021/07/12
4.3K0
在线视频的工作原理 在线视频平台选择服务器方法
第06篇-当Elasticsearch进行文档索引时,它是怎样工作的?
另外对于入门小白,我强烈推荐这篇Elasticsearch搭建教程给你,小白会碰到的坑,这里都已经写了答案。
普通人刘大
2020/06/02
2.3K0
当隔壁日本的年轻人对工作困惑时,他们在想什么?
疫情冲击实体经济,随处可见关停的线下门店,街道上的小摊小贩多了起来,城管也明显在默许着,曾经高歌猛进的互联网公司纷纷裁员,国内外动作整齐划一,投资市场一片惨淡,起起伏伏捉摸不定。
Cloudox
2022/11/28
4700
当隔壁日本的年轻人对工作困惑时,他们在想什么?
WebSocket简单应用
点击这里前往Github获取本文源码,注意server.js是在Node环境里跑的。
kifuan
2022/10/24
3570
Python websocket服务器
https://github.com/Pithikos/python-websocket-server
audy
2019/03/21
5.6K0
Spring Boot 结合 WebSocket 实现在线聊天
要说 WebSocket 协议,我们得先来说说 HTTP 协议的一个请求头,事实上,所有的 HTTP 客户端(浏览器、移动端等)都可以在请求头中包含 Connection:Upgrade ,这个表示客户端希望升级请求协议,那么希望升级成什么样的协议呢?我们需要在 Upgrade 头中指定一个或者多个协议的列表,当然这些协议必须兼容 HTTP/1.1 协议。服务器收到请求之后,如果接受升级请求,那么将会返回一个 101 的状态码,表示转换请求协议,同时在响应的 Upgrade 头中使用单个值,这个单个值就是请求协议列表中服务器支持的第一个协议(即请求头的 Upgrade 字段中列出来的协议列表中服务器支持的第一个协议)。
江南一点雨
2019/10/15
1.4K0
Spring Boot 结合 WebSocket 实现在线聊天
SpringBoot+WebSocket实现在线聊天(二)
本文是vhr系列第15篇,项目地址:https://github.com/lenve/vhr 在线聊天使用了SpringBoot+WebSocket实现,为了保证用户隐私,所有的聊天数据都保存在系统本地,服务器只进行了数据转发。OK,那接下来,我们来看下大致的实现步骤。 服务端 服务端首先加入websocket依赖,如下: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-st
江南一点雨
2018/04/02
2.2K0
SpringBoot+WebSocket实现在线聊天(一)
本文是vhr系列的第十四篇,项目地址:https://github.com/lenve/vhr 在线聊天功能是为了方便HR快速交流,由于HR人数有限,因此这里并未考虑高并发问题,小伙伴思考问题一定
江南一点雨
2018/04/02
1.4K0
SpringBoot+WebSocket实现在线聊天(一)
nodejs搭建websocket服务器
前面我们了解了什么是websocket,下面用nodejs简单的搭建一个websocket服务器,我们使用nodejs-websocket这个npm包,看代码:
挥刀北上
2021/02/03
4.2K0
iOS_解决:当点击到TableViewCell上的Button时,就无法滑动TableView的问题
估计是当前面试官描述的不够清楚,然后我没有印象,也没理解他说的是什么。就回答说没有遇到过,幸而躲过了这一题。 但其实肯定是遇到过的,只是没有引起我的重视。 以下是解决办法:
mikimo
2022/07/20
7310
[WebSocket入门]手把手搭建WebSocket多人在线聊天室(SpringBoot+WebSocket)
https://www.callicoder.com/spring-boot-websocket-chat-example/
Rude3Knife的公众号
2019/08/16
2.8K0
[WebSocket入门]手把手搭建WebSocket多人在线聊天室(SpringBoot+WebSocket)
点击加载更多

相似问题

当websocket客户端太慢时,websocket将如何工作?

25

在线程中运行WebSocket服务器

13

ruby: websocket服务器和websocket客户端无法工作

16

WebSocket服务器因某些原因无法工作

15

在线查看时网站无法正常工作

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文