第十篇、Swift -- WebSocket


每當小編再開發中遇到了困難,在網上搜,簡直是垃圾堆里找金子。國內網站真的全不可靠,最后翻牆去國外網站尋找,才可以找到。找到了寫websocket文章,同時找到了集成的框架文件,一個叫Starscream的第三方庫,附上github地址『去看下->Starscream』
最近,開發中要使用WebSockrt,做到實時監控消息,需要用的技術是websocket。看到大家帖子也是好多詢問webSocket的,在這里立帖子
什么原理什么的。我就不說了,自己百度下也行,實在不行給你們幾個鏈接自己去看吧

 

思路:

  WebSocket寫的接口報頭有一段XML,這個是約定俗成的一種格式

  1.客戶端在請求服務端數據的時候,就必須按照這種格式來發送請求

 

1.先認識什么是WebSocket

  WebSocket protocol 是HTML5一種新的協議。它實現了瀏覽器與服務器全雙工通信(full-duplex)。在 WebSocket API,瀏覽器和服務器只需要要做一個握手的動作,然后,瀏覽器和服務器之間就形成了一條快速通道。兩者之間就直接可以數據互相傳送。

  import UIKit
  import Starscream
 @objc public protocol DSWebSocketDelegate: NSObjectProtocol{
  /**websocket 連接成功*/
  optional func websocketDidConnect(sock: DSWebSocket)
  /**websocket 連接失敗*/
  optional  func websocketDidDisconnect(socket: DSWebSocket, error: NSError?)
  /**websocket 接受文字信息*/
  func websocketDidReceiveMessage(socket: DSWebSocket, text: String)
  / **websocket 接受二進制信息*/
  optional  func  websocketDidReceiveData(socket: DSWebSocket, data: NSData)
  }
public class DSWebSocket: NSObject,WebSocketDelegate {
  var socket:WebSocket!
  weak var webSocketDelegate: DSWebSocketDelegate?
  //單例
  class func sharedInstance() -> DSWebSocket
  {
      return manger
  }
  static let manger: DSWebSocket = {
      return DSWebSocket()
  }()
  //MARK:- 鏈接服務器
func connectSever(){
  socket = WebSocket(url: NSURL(string: 你的URL網址如:ws://192.168.3.209:8080/shop))
  socket.delegate = self
  socket.connect()
 }
 //發送文字消息
 func sendBrandStr(brandID:String){
  socket.writeString(brandID))
}
//MARK:- 關閉消息
func disconnect(){
    socket.disconnect()
}
//MARK: - WebSocketDelegate
public func websocketDidConnect(socket: WebSocket){
    debugPrint("連接成功了: \(error?.localizedDescription)")
    webSocketDelegate?.websocketDidConnect!(self)
}
public func websocketDidDisconnect(socket: WebSocket, error: NSError?){
  debugPrint("連接失敗了: \(error?.localizedDescription)")
  webSocketDelegate?.websocketDidDisconnect!(self, error: error)
}
//注:一般返回的都是字符串
public func websocketDidReceiveMessage(socket: WebSocket, text: String){
 debugPrint("接受到消息了: \(error?.localizedDescription)")
      webSocketDelegate?.websocketDidReceiveMessage!(self, text: text)
}
public func websocketDidReceiveData(socket: WebSocket, data: NSData){
  debugPrint("data數據")
  webSocketDelegate?.websocketDidReceiveData!(self, data: data)
    }
 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM