- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我最近开始研究 Web 套接字,尤其是 Flask-SocketIO。我对这个示例项目进行了一些尝试并使其部分正常工作。
如果在本地浏览器中打开多个选项卡, slider 会更新并在所有选项卡之间同步,但如果我从另一个客户端打开页面,浏览器将不会同步。直到其他客户端刷新他的页面。
有人可以向我解释一下这种行为吗?我是否误解了有关网络套接字的一般情况?
这是我的 python/flask 代码:
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
app = Flask(__name__)
socketio = SocketIO(app)
values = {
'slider1': 25,
'slider2': 0,
}
@app.route('/')
def index():
return render_template('index.html',**values)
@socketio.on('connect')
def test_connect():
emit('after connect', {'data':'Lets dance'})
@socketio.on('Slider value changed')
def value_changed(message):
values[message['who']] = message['data']
emit('update value', message, broadcast=True)
if __name__ == '__main__':
socketio.run(app, host='0.0.0.0')
还有我的 html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Synchronized Slider</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.1.1/socket.io.js"></script>
<script type="text/javascript">
$(document).ready(function(){
// sending a connect request to the server.
var socket = io.connect('http://localhost:5000');
// An event handler for a change of value
$('input.sync').on('input', function(event) {
socket.emit('Slider value changed', {who: $(this).attr('id'), data: $(this).val()});
return false;
});
socket.on('after connect', function(msg){
console.log('After connect', msg);
});
socket.on('update value', function(msg) {
console.log('Slider value updated');
$('#'+msg.who).val(msg.data);
});
});
</script>
</head>
<body>
<div class="container text-center">
<h1 >Slider Demo</h1>
<form class="mt-5">
<div class="form-group">
<label for="formControlRange">Demo Slider 1</label>
<input type="range" class="form-control-range sync" id="slider1" min="0" max="50" value="{{slider1}}">
</div>
<div class="form-group">
<label for="formControlRange">Demo Slider 2</label>
<input type="range" class="form-control-range sync" id="slider2" min="0" max="50" value="{{slider2}}">
</div>
</form>
</div>
</body>
</html>
提前致谢! :)
最佳答案
想通了。
var socket = io.connect('http://localhost:5000');
当然,其他人不会在本地主机上运行任何服务器。
关于python - Flask_socketIO 不与第二个客户端通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55199040/
我最近开始研究 Web 套接字,尤其是 Flask-SocketIO。我对这个示例项目进行了一些尝试并使其部分正常工作。 如果在本地浏览器中打开多个选项卡, slider 会更新并在所有选项卡之间同步
我有一个 React 客户端,它需要使用 flask_socketio 服务器发出的消息,如果我在 'connect' { socket.on("log", dx => thi
我应该如何使用 SSL 将 app.run() 转换为 sockio.run()? 我有下面的应用程序启动代码与 flask 开发服务器一起运行 if __name__=='__main__':
我尝试了官方的演示代码: #test.py from flask import Flask, render_template from flask_socketio import SocketIO a
我有以下主文件。 from flask import Flask, render_template, request from flask_socketio import SocketIO, emit
我正在我的应用程序上实现 websockets。连接发生但回显事件从未触发,我不明白为什么。服务器成功地为我的index.html提供服务,并且“已连接”行确实登录到我的服务器上,并且我的前端没有收到
我是一名优秀的程序员,十分优秀!