当前位置: 首页 > 知识库问答 >
问题:

与FastAPI/FastAPI socketio和JavaScript/socket的双向通信。木卫一。js-->连接错误

东郭凯捷
2023-03-14

我制作了一个小演示,在FLASK中尝试通过WebSocket进行双向通信,效果不错。现在,我正尝试对无法连接的FastAPI(和FastAPI socketio而不是flask socketio)执行相同的设置。有人知道我做错了什么吗?先谢谢你。

终端错误:
信息:127.0.0.1:50117-"GET/HTTP/1.1"200 OK
信息:127.0.0.1:50117-"GET/socket.io/?EIO=4

控制台中的错误:
加载资源失败:服务器以404(未找到)轮询xhr的状态响应。js:202
GEThttp://127.0.0.1:8000/socket.io/?EIO=4

指数html:

<!DOCTYPE html>
<html>

<head>
  <script src="//code.jquery.com/jquery-3.3.1.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/3.1.3/socket.io.js"
    integrity="sha512-2RDFHqfLZW8IhPRvQYmK9bTLfj/hddxGXQAred2wNZGkrKQkLGj8RCkXfRJPHlDerdHHIzTFaahq4s/P4V6Qig=="
    crossorigin="anonymous"></script>
  <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>

<body>

  <script type="text/javascript">

    $(document).ready(function () {

      var socket = io.connect('http://' + document.domain + ':' + location.port);

      socket.on('connect', function (event) {
        console.log('user is connected now');
        socket.emit('client_connect_event', { data: 'User connected' });
      });

      socket.on('server_antwort_01', function (msg, cb) {
        $('#log0').append('<br>' + $('<div/>').text('logs #' + msg.count + ': ' + msg.data).html());
        if (cb)
          cb();
      });

      $('form#start').submit(function (event) {
        socket.emit('client_start_event', { data: 'Start doing something' });
        return false;
      });

      $('form#stop').submit(function (event) {
        socket.emit('client_stop_event', { data: 'Stop doing something' });
        return false;
      });
    });
  </script>

  <h1>Websocket Demo</h1>

  <h2> Press below to display something send from Server</h2>
  <form id="start" method="post" action="#">
    <input type="submit" value="Start">
  </form>

  <form id="stop" method="post" action="#">
    <input type="submit" value="Stop">
  </form>

  <h3> Log </h3>
  <div id="log0"></div>
</body>
</html>

主插座。py(使用FastAPI)

from fastapi import FastAPI
from fastapi_socketio import SocketManager
from fastapi.responses import HTMLResponse
app = FastAPI()
socket_manager = SocketManager(app=app)

html = ""
with open('index.html', 'r') as f:
    html = f.read()

@app.get("/")
async def get():
    return HTMLResponse(html)

@app.sio.on('client_connect_event')
async def handle_client_connect_event(message):
    print(message)
    await app.sio.emit('server_antwort01', {'data': 'connection was successful'})    

@app.sio.on('client_start_event')
async def handle_client_start_event(message):
    print('Server says: start_event worked')
    print(message)
    await app.sio.emit('server_antwort01',{'data':'start event worked'})  

共有1个答案

温镜
2023-03-14

通过更新main使其工作。收件人:

from fastapi import FastAPI
from fastapi_socketio import SocketManager
from fastapi.responses import HTMLResponse

app = FastAPI()
socket_manager = SocketManager(app=app)

html = ""
with open('index.html', 'r') as f:
    html = f.read()

@app.get("/")
async def get():
    return HTMLResponse(html)

@app.sio.on('client_connect_event')
async def handle_client_connect_event(sid, *args, **kwargs): # (!)
    await app.sio.emit('server_antwort01', {'data': 'connection was successful'})    

@app.sio.on('client_start_event')
async def handle_client_start_event(sid, *args, **kwargs): # (!)
    print('Server says: start_event worked')
    await app.sio.emit('server_antwort01',{'data':'start event worked'})

和索引中的var套接字。html至:

var socket = io('ws://localhost:8000', {
    path: '/ws/socket.io'
});
 类似资料:
  • 停止应用程序后,我遇到错误。如何解决此问题?对于生产,我使用端口3000,用于开发4200。 [HPM]尝试代理请求/socket.io/?EIO=3时出错 我的女儿。conf如下所示: proxy.conf.json

  • 本文向大家介绍Android Socket 线程连接openwrt与arduino单片机串口双向通信的实例解析,包括了Android Socket 线程连接openwrt与arduino单片机串口双向通信的实例解析的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,直接给大家贴代码了,具体代码如下所示: 以上所述是小编给大家介绍的Android Socket 线程连接openwrt与ardui

  • 我正在使用MERN stack和socket开发一个私人聊天应用程序。伊奥。 我能够成功地向特定用户发送私人消息,但无法包含要向两个用户显示的消息发送者。 客户端 服务器 我需要帮助来包含发件人以及要显示给两个用户的消息。我还想正确附加消息,因为上面的代码覆盖了之前的消息。

  • 本文向大家介绍Java--Socket通信(客户端服务端双向),包括了Java--Socket通信(客户端服务端双向)的使用技巧和注意事项,需要的朋友参考一下 新建两个工程,一个客户端,一个服务端,先启动服务端再启动客户端 两个工程的读写操作线程类基本上完全相同 服务端: 客户端:  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 我想弄清楚Meteor是如何和close一起工作的。木卫一。文档 例如,我们有一个curl命令从close中检索单个Lead。木卫一 使用API密钥。流星有方法 所以我们可以像这样使用这个url 但是我们如何在这里应用API密钥呢?

  • 问题内容: 我在与JoinTables进行双向一对多关联时遇到了一些问题。这就是我得到的: A类: B类: 如果创建A和B的实例,请将B的实例添加到A并保存。有用。但是,当我重新加载A的实例并尝试访问B的集合时,它将引发LazyInitializationError并显示消息“对加载集合的非法访问”。 我在哪里错了?:)谁能指出我一个使用联接表的双向关联示例。在所有权保留为A类的地方,我搜索了hi