javascript - 从烧瓶服务器发送到客户端 JavaScript 不发送到发送者
问题描述
我正在尝试从 HTML 表单输入中获取文本,然后使用 JavaScript 和 Socket 将其发送到服务器端,即 python 烧瓶,然后将其发送给每个人,并使用包含此文本的 <P> 标记为每个人更新页面。
它适用于除发件人之外的所有客户端,所有以前的 <p> 标记都因不明原因而被删除。
烧瓶代码:
@socketio.on("submit channel")
def channel(data):
ch = data["ch"]
channels.append(ch)
emit("channel", {"ch": ch}, broadcast=True)
JavaScript 代码:
document.addEventListener('DOMContentLoaded', () => {
var socket = io.connect(location.protocol + '//' + document.domain + ':' + location.port);
socket.on('connect', () => {
document.querySelector('#channel').onsubmit = () => {
const ch = document.querySelector('#ch').value;
socket.emit('submit channel', {'ch': ch});
};
});
socket.on('channel', data => {
const p = document.createElement('p');
p.innerHTML = data.ch;
document.querySelector('#channels').append(p);
});
});
HTML 代码:
{% extends "layout.html" %}
{% block head %}
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/socket.io/1.3.6/socket.io.min.js"></script>
<script src="{{ url_for('static', filename='index.js') }}"></script>
{% endblock %}
{% block title %}
messages
{% endblock %}
{% block body %}
<div id="channels">
</div>
<hr>
<form id="channel">
<input type="text" placeholder="Channel Name" id="ch">
<input type="submit">
</form>
{% endblock %}
解决方案
推荐阅读
- ruby - 正则表达式仅匹配第一个元音并将其包含在匹配中
- ios - 更改 spritekit 中的节点颜色
- java - spring-data-neo4j 与 Autowired 冲突
- javascript - 捆绑失败的 React Native
- netlogo - NETLOGO:遍历两个列表列表并动态更改项目
- mysql - 查找对另一列中的值进行迭代的最大计数
- python - TDM-GCC 编译的 win32x64 DLL 无法在 python 3.6 中加载,但在使用 python 2.7 时可以
- excel - 如何根据数据条件自动更改图表中条形的颜色
- html - 向下滚动时,视频会在导航栏下方吗?
- vba - VBA - 遍历要过滤的项目