[Swift 开发] 一分钟会用Web Socket

一般网络请求时,只能client发请求,server回答。server不能主动给client发消息,Web Socket就能解决这个问题。
 

1.导入框架

import Starscream

2.初始化对象

var socket: WebSocket?
var isConnected = false
let serverUrl = "ws://82.157.123.54:9010/ajaxchattest"

var request = URLRequest(url: URL(string: serverUrl)!)
request.timeoutInterval = 5
socket = WebSocket(request: request)
socket?.delegate = self
socket?.connect()

3.接收消息和回调结果

    func didReceive(event: WebSocketEvent, client: WebSocket) {
        switch event {
        case let .connected(headers):
            isConnected = true
            print("websocket is connected: \(headers)")
        case let .disconnected(reason, code):
            isConnected = false
            print("websocket is disconnected: \(reason) with code: \(code)")
        case let .text(string):
            label.text = string
            print("Received text: \(string) \(CFAbsoluteTimeGetCurrent())")
        case let .binary(data):
            print("Received data: \(data.count)")
        case .ping:
            print("ping")
            break
        case .pong:
            print("pong \(CFAbsoluteTimeGetCurrent())")
            break
        case .viabilityChanged:
            break
        case .reconnectSuggested:
            break
        case .cancelled:
            isConnected = false
            print("断开链接")
        case .error:
            isConnected = false
            print("error")
        }
    }

4.测试

@IBAction func sendClicked(_ sender: Any) {
      socket?.write(data: "1234".data(using: .utf8)!, completion: {
          print("发送完成")
      })  
    }

//发送完成
//Received text: 1234 
@IBAction func sendClicked(_ sender: Any) {
     socket?.write(string: "Hi Server! \(CFAbsoluteTimeGetCurrent())")
     socket?.write(ping: Data()) 
}

//Received text: Hi Server!  
//pong 660204472.596506

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值