         ws.binaryType = binaryType
         return ws
     }
-    
+
+    var hashValue: Int { return id }
+
     func hash(into hasher: inout Hasher) {
         hasher.combine(id)
     }

        wro = writeStream!.takeRetainedValue()
        (rd, wr) = (rdo!, wro!)
        rd.setProperty(security.level, forKey: Stream.PropertyKey.socketSecurityLevelKey)
		wr.setProperty(security.level, forKey: Stream.PropertyKey.socketSecurityLevelKey)
        if services.contains(.VoIP) {
            rd.setProperty(StreamNetworkServiceTypeValue.voIP.rawValue, forKey: Stream.PropertyKey.networkServiceType)
            wr.setProperty(StreamNetworkServiceTypeValue.voIP.rawValue, forKey: Stream.PropertyKey.networkServiceType)

        free(buffer)
    }
    /*func deflate(_ bufin : UnsafePointer<UInt8>, length : Int, final : Bool) -> (p : UnsafeMutablePointer<UInt8>, n : Int, err : NSError?){
     return (nil, 0, nil)
     }*/
}

/// WebSocketDelegate is an Objective-C alternative to WebSocketEvents and is used to delegate the events for the WebSocket connection.
