2016-11-14 120 views
0

我正在尝试使用Vapor创建一个小型聊天应用程序,但我被卡住了。我在ios上使用Socket.IO,并且总是收到找不到的错误页面。Vapor - 创建网络套接字

你能指点我指出我的错误吗?

蒸气代码:

drop.socket("ws") { req, ws in 
print("New WebSocket connected: \(ws)") 

// ping the socket to keep it open 
try background { 
while ws.state == .open { 
    try? ws.ping() 
    drop.console.wait(seconds: 10) // every 10 seconds 
} 
} 

ws.onText = { ws, text in 
print("Text received: \(text)") 

// reverse the characters and send back 
let rev = String(text.characters.reversed()) 
try ws.send(rev) 
} 

ws.onClose = { ws, code, reason, clean in 
print("Closed.") 
} 
} 

drop.run() 

在客户端:

func receiveMSGFromServer(){ 

let u = URL(string: "ws://localhost:8080/ws") 
//"http://localhost:8080/" 

let socket = SocketIOClient(socketURL: URL(string: "wss://localhost:8080/ws")!, config: [.log(true), .forcePolling(true)]) //SocketIOClient(socketURL: u!) 

socket.emit("ws", ":emptyParam") 

socket.on("ws") {data, ack in 
    print("Message for you! \(data[0])") 
// ack("I got your message, and I'll send my response") 
    socket.emit("response", "Hello!") 
} 

socket.connect() 

}

+0

我不确定socket-io是一个通用的websocket库。我相信它的目的是在后端与专有的套接字库进行通信。你可能想尝试用Starscream或与Vapor沟通的东西。 – Logan

+0

如果回答下面的工作,标记此问题已解决 – Quver

+0

我有一个问题,它不与SocketIOClient工作。我尝试了Starscream,它工作。 –

回答

2

你好像在socketURL使用wss

这只有在您通过TLS(SSL)托管应用程序时才有效。

尝试仅使用ws或通过TLS托管应用程序。