RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1331079
Accepted
WGPavell
WGPavell
Asked:2022-09-22 23:06:03 +0000 UTC2022-09-22 23:06:03 +0000 UTC 2022-09-22 23:06:03 +0000 UTC

Swift Socket.io 客户端 - 发出不工作 [关闭]

  • 772
关闭 这个问题是题外话。目前不接受回复。

该问题是由不再复制的问题或错字引起的。虽然类似问题可能与本网站相关,但该问题的解决方案不太可能帮助未来的访问者。通常可以通过在发布问题之前编写和研究一个最小程序来重现问题来避免此类问题。

12 个月前关闭。

改进问题

我正在尝试通过socket.io 客户端发送消息,但在大多数情况下,服务器不会收到它(有时会收到)。客户端日志中写入以下内容:

2021-09-22 17:43:07.788557+0300 My App[46226:8969192] LOG SocketIOClient{/}: Adding handler for event: connect
2021-09-22 17:43:07.788778+0300 My App[46226:8969192] LOG SocketIOClient{/}: Adding handler for event: personal_chat_send_message
2021-09-22 17:43:07.788958+0300 My App[46226:8969192] LOG SocketIOClient{/}: Handling event: statusChange with data: [connecting, 2]
2021-09-22 17:43:07.789132+0300 My App[46226:8969192] LOG SocketIOClient{/}: Joining namespace /
2021-09-22 17:43:07.789305+0300 My App[46226:8969192] LOG SocketManager: Tried connecting socket when engine isn't open. Connecting
2021-09-22 17:43:07.789514+0300 My App[46226:8969192] LOG SocketManager: Adding engine
2021-09-22 17:43:07.789837+0300 My App[46226:8969985] LOG SocketEngine: Starting engine. Server: https://myserver
2021-09-22 17:43:07.789993+0300 My App[46226:8969985] LOG SocketEngine: Handshaking
2021-09-22 17:43:07.817286+0300 My App[46226:8969192] LOG SocketIOClient{/}: Handling event: websocketUpgrade with data: [["Upgrade": "websocket", "Sec-WebSocket-Accept": "jT5+AshZ0qfooIqPP5uMjN27daM=", "Connection": "Upgrade"]]
2021-09-22 17:43:07.817286+0300 My App[46226:8969985] LOG SocketEngine: Got message: 0{"sid":"Za4h8by7MRFk2P9uAAAE","upgrades":[],"pingInterval":25000,"pingTimeout":5000}
2021-09-22 17:43:07.817544+0300 My App[46226:8969192] LOG SocketIOClient{/}: Handling event: ping with data: []
2021-09-22 17:43:07.817545+0300 My App[46226:8969985] LOG SocketEngine: Writing ws:  has data: false
2021-09-22 17:43:07.817655+0300 My App[46226:8969192] LOG SocketManager: Engine opened Connect
2021-09-22 17:43:07.817688+0300 My App[46226:8969985] LOG SocketEngineWebSocket: Sending ws:  as type: 2
2021-09-22 17:43:07.817781+0300 My App[46226:8969192] LOG SocketIOClient{/}: Socket connected
2021-09-22 17:43:07.817881+0300 My App[46226:8969192] LOG SocketIOClient{/}: Handling event: statusChange with data: [connected, 3]
2021-09-22 17:43:07.817983+0300 My App[46226:8969192] LOG SocketIOClient{/}: Handling event: connect with data: ["/"]
connected
2021-09-22 17:43:07.818123+0300 My App[46226:8969192] LOG SocketIOClient{/}: Adding once handler for event: pong
2021-09-22 17:43:07.824749+0300 My App[46226:8969495] LOG SocketEngine: Got message: 3
2021-09-22 17:43:07.825082+0300 My App[46226:8969192] LOG SocketIOClient{/}: Handling event: pong with data: []
2021-09-22 17:43:07.825273+0300 My App[46226:8969192] LOG SocketIOClient{/}: Removing handler with id: 14D80209-2150-4512-9619-D3CEAB337E57
2021-09-22 17:43:07.825506+0300 My App[46226:8969192] LOG SocketIOClient{/}: Emitting: 2["personal_chat","fdsfds"], Ack: false
2021-09-22 17:43:07.825741+0300 My App[46226:8969495] LOG SocketEngine: Writing ws: 2["personal_chat","fdsfds"] has data: false
2021-09-22 17:43:07.825908+0300 My App[46226:8969495] LOG SocketEngineWebSocket: Sending ws: 2["personal_chat","fdsfds"] as type: 4
emitted
2021-09-22 17:43:07.870880+0300 My App[46226:8969985] LOG SocketEngine: Got message: 40
2021-09-22 17:43:07.871108+0300 My App[46226:8969192] LOG SocketParser: Parsing 0
2021-09-22 17:43:07.871292+0300 My App[46226:8969192] LOG SocketParser: Decoded packet as: SocketPacket {type: 0; data: []; id: -1; placeholders: 0; nsp: /}

我像这样连接到服务器:

self?.socketManager.setConfigs([.version(.two), .reconnects(true), .extraHeaders(["billing-token": token, "User-Agent": userAgent]), .forceNew(true), .compress, .forceWebsockets(true), .log(true)])
let socket = self?.socketManager.defaultSocket
socket?.on("connect", callback: { data, ack in
    print("connected")
    self?.socketManager.handleQueue.async {
        socket?.once(clientEvent: .pong, callback: { data, ack  in
            socket?.emit("personal_chat", "fdsfds") {
                print("emitted")
            }
        })
    }
})
socket?.on("personal_chat_send_message", callback: { data, ack in
    debugPrint(data)
})
socket?.connect()

从日志中可以看出,connected 和emitted 是输出。最初尝试不使用handleQueue,结果相似。我尝试添加延迟,然后发出更频繁地在服务器上工作,但并非总是如此。我最初尝试不指定数据(fdsfds),但什么也没发生。

在服务器上,我有以下代码:

io.on('connection', (socket) => {
    let userData = socketsData.get(socket)
    console.log(`${socket.id} connected`);
    // ... другие события
    socket.on("personal_chat", async () => {
        console.log(`subscribe to ${userData.chatId} chat`);
        socket.join(`personal_chat_${userData.chatId}`);
    });
    socket.on("disconnect", () => {
        console.log(`${socket.id} disconnected`);
        socketsData.delete(socket);
    });
});

在控制台中,来自服务器的以下输出:

Sep 22 18:01:40 clickhouse-lk node[11900]: F0S-22mkUan2Hw_gAAAF connected
Sep 22 18:01:41 clickhouse-lk node[11900]: F0S-22mkUan2Hw_gAAAF disconnected
Sep 22 18:01:43 clickhouse-lk node[11900]: e5mEbd7zH5SeTtTsAAAG connected
Sep 22 18:01:44 clickhouse-lk node[11900]: e5mEbd7zH5SeTtTsAAAG disconnected
Sep 22 18:01:45 clickhouse-lk node[11900]: dAF09biIm0s7YxXgAAAH connected
Sep 22 18:01:48 clickhouse-lk node[11900]: dAF09biIm0s7YxXgAAAH disconnected

如您所见,我尝试了几次发送发射,但没有任何东西到达服务器。我尝试从 Web 客户端执行此操作,一切都完美地在那里发出。可能是什么问题以及如何解决?

swift
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    WGPavell
    2022-09-27T17:12:47Z2022-09-27T17:12:47Z

    将服务器更新到第三个版本,之后发射开始正常工作

    • 0

相关问题

  • Swift函数:等待数据接收后再返回结果

  • 我在哪里可以找到 SpriteKit 课程/教师/导师?

  • 如果部分中的单元格为空,如何在 tableView 中隐藏部分 SWIFT

  • UITableView 创建部分的问题

  • DataSource 不会在 CollectionView.reloadData() 上触发

  • 无法开启定时器

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    表格填充不起作用

    • 2 个回答
  • Marko Smith

    提示 50/50,有两个,其中一个是正确的

    • 1 个回答
  • Marko Smith

    在 PyQt5 中停止进程

    • 1 个回答
  • Marko Smith

    我的脚本不工作

    • 1 个回答
  • Marko Smith

    在文本文件中写入和读取列表

    • 2 个回答
  • Marko Smith

    如何像屏幕截图中那样并排排列这些块?

    • 1 个回答
  • Marko Smith

    确定文本文件中每一行的字符数

    • 2 个回答
  • Marko Smith

    将接口对象传递给 JAVA 构造函数

    • 1 个回答
  • Marko Smith

    正确更新数据库中的数据

    • 1 个回答
  • Marko Smith

    Python解析不是css

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5