首页 > 解决方案 > 如何使用 socket.io 快速发送 ping?

问题描述

我正在尝试在客户端和服务器之间使用 socket.io-client-swift( https://github.com/socketio/socket.io-client-swift )。即使我不确定连接是否成功建立,我也无法发送 ping。我正在将节点 js 用于服务器。

客户端代码

import UIKit
import SocketIO

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let manager = SocketManager(socketURL: URL(string: "ws://localhost:3000")!, config: [.log(true), .compress])
        let socket = manager.defaultSocket
        socket.on(clientEvent: .connect) {  (data, ack) in
            print("connected")
            socket.emit("welcome_socket", "Hi server I am iOS")
        }
        
        socket.on(clientEvent: .disconnect) {  (data, ack) in
            print("connected")
            socket.emit("disconnect_socket", "Bye I am iOS")
        }
        
        socket.connect()
    }


}

服务器端代码

var express = require("express");
var app = express();
const server = require('http').createServer(app);
const io = require('socket.io')(server)
var connections = []



io.sockets.on('connection', function(socket){
    connections.push(socket)
    console.log("connect: %s sockets are connected", connections.length)

    // disconnect
    socket.on('disconnect', function(data){
        connections.splice(connections.indexOf(socket), 1)
        console.log("disconnect: %s sockets are connected", connections.length)
    })

    // listen from client
    socket.on('welcome_socket', (data)=>{
        console.log("data recieved from client, %s", data)
        // respond back to the cient for the same event ()
        io.emit('welcome_socket', "Hey client!")
    })
})

server.listen(3000, ()=> {
    console.log("server is running on 3000")
})

响应图像 在此处输入图像描述

标签: iosnode.jsswiftwebsocket

解决方案


推荐阅读