/ / Підключіть sails.io за допомогою програми iOS swift - ios, swift, sails.js, sails.io.js

Зв'яжіть sails.io із швидкими програмами iOS, ios, swift, sails.js, sails.io.js

Я намагаюся підключити простий додаток для iOS до API sails.js. Додаток iOS написано швидко. Версія вітрил становить 0,11

Для управління веб-сокетом я використовую https://github.com/socketio/socket.io-client-swift

class Communicate: UIViewController {

let socket = SocketIOClient(socketURL: "localhost:2000")

override func viewDidLoad() {
super.viewDidLoad()
self.addHandlers()
self.socket.connect()
}

func addHandlers() {

socket.on("connect") {data, ack in
print("socket connected !") // This is working

self.socket.emit("get", ["url": "/device"]) // I get the sails error
}

}
}

На консолі sails.js я отримую таку помилку:

verbose: Receiving incoming message from Socket.io:  { url: "/device?__sails_io_sdk_version=0.11.0&__sails_io_sdk_platform=iOS&__sails_io_sdk_language=fr" }

error: Error (SAILS:HOOK:SOCKETS:PARSE_VIRTUAL_REQ):: Failed to parse incoming socket.io request.

details: "Sails v0.11.x is not compatible with the socket.io/sails.io.js client SDK version you are using (0.9.0). Please see the v0.11 migration guide on http://sailsjs.org for more information." }

Я, мабуть, щось неправильно наслідую поведінку sails.io, але я не знаю, як цього досягти.

Заздалегідь дякую за вашу допомогу.

Відповіді:

3 для відповіді № 1

Замість зміни сервера ви можете підключити параметри, щоб сказати серверу, що ви відповідаєте семантиці v0.11.0 за допомогою:

self.socket = SocketIOClient(socketURL: baseWebSocketServerURL, options:
[SocketIOClientOption.ConnectParams(["__sails_io_sdk_version":"0.11.0"])])

Я думаю, що це краще рішення, ніж зламати сервер і зламати семантичну перевірку версій для інших клієнтів.


1 для відповіді № 2

Я знаю, що це не найкраще рішення. Але якщо ви переходите node_modulessailsnode_modulessails-hock-socketslibparse-sdk-metadata.js змінити handshake.query [SDK_META_PARAMS.version] = "0,9.0"; до "0,11,0" Це може вирішити вашу проблему.


0 для відповіді № 3

Якщо інша відповідь не спрацює для вас, дайте нам це зробити:

    let socket = SocketIOClient(socketURL: URL(string: "http://yoursailsserver.com:1337)")!, config: [.log(true), .forcePolling(true), .connectParams(["__sails_io_sdk_version":"0.11.0"])])