LMWebSocket.swift 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. //
  2. // LMWebSocket.swift
  3. // LampMind
  4. //
  5. // Created by weclouds on 2019/8/5.
  6. // Copyright © 2019 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. import Starscream
  10. @objc protocol LMWebSocketDelegeate : NSObjectProtocol{
  11. /** websocket 连接成功*/
  12. @objc optional func lm_websocketDidConnct(_ sock:LMWebSocket)
  13. /** websocket 断开连接*/
  14. @objc optional func lm_websockDidDisconnect(_ sock:LMWebSocket,error:Error?)
  15. /**接受文字信息*/
  16. @objc optional func lm_websocketDidReceiveMessage(_ socket:LMWebSocket,text:String)
  17. /** 接收二进制信息*/
  18. @objc optional func lm_websocketDidReceiveData(_ socket: LMWebSocket,data:Data)
  19. }
  20. class LMWebSocket: NSObject ,WebSocketDelegate{
  21. var socket : WebSocket?
  22. weak var webSocketDelegate :LMWebSocketDelegeate?
  23. //单例
  24. class func shareInsatance() -> LMWebSocket {
  25. return manager
  26. }
  27. static let manager : LMWebSocket = {
  28. return LMWebSocket()
  29. }()
  30. //连接服务器
  31. func connectSever(_ url:String) {
  32. socket = WebSocket(url: URL(string: url)!)
  33. socket?.delegate = self
  34. socket?.connect()
  35. }
  36. //写入指令
  37. func writeCmd(_ cmd:String) {
  38. socket?.write(string: cmd, completion: {
  39. log.debug("写入成功")
  40. })
  41. }
  42. func reconnect() {
  43. socket?.connect()
  44. }
  45. //发送文字消息
  46. func sendBrandStr(_ brandID: String) {
  47. socket?.write(string: brandID)
  48. }
  49. //MARK :关闭消息
  50. func disconnect() {
  51. socket?.disconnect()
  52. }
  53. func websocketDidConnect(socket: WebSocketClient) {
  54. log.debug("成功连接了 --- \(socket)")
  55. webSocketDelegate?.lm_websocketDidConnct?(self)
  56. }
  57. func websocketDidDisconnect(socket: WebSocketClient, error: Error?) {
  58. log.debug("断开连接了 --- \(socket) ,error --\(error.debugDescription)")
  59. disconnect()
  60. if webSocketDelegate != nil && (webSocketDelegate?.responds(to: #selector(LMWebSocketDelegeate.lm_websockDidDisconnect(_:error:)))) == true {
  61. webSocketDelegate?.lm_websockDidDisconnect?(self, error: error)
  62. }
  63. }
  64. func websocketDidReceiveMessage(socket: WebSocketClient, text: String) {
  65. log.debug("LMWebSocket - 接收到的信息-- \(text)")
  66. webSocketDelegate?.lm_websocketDidReceiveMessage?(self, text: text)
  67. }
  68. func websocketDidReceiveData(socket: WebSocketClient, data: Data) {
  69. log.debug("接收到二进制数据 ----\(data)")
  70. webSocketDelegate?.lm_websocketDidReceiveData?(self, data: data)
  71. }
  72. }