2016-03-03 127 views
0

IOS客戶端SOCKET.IO SWIFT Socket.io瀏覽器客戶端:不從socket.io客戶端接收發出事件

class SignupViewController: UIViewController{ 

let socket = SocketIOClient(socketURL: NSURL(string: "http://localhost:3000")!) 

override func viewDidLoad() { 
    super.viewDidLoad() 
} 

@IBAction func createUser(sender: AnyObject) { 
    LoginUser(email: emailInput.text!, password: passwordInput.text!){ results in 
     self.addHandlers() 
     self.socket.connect() 
    } 
} 

private func addHandlers(){ 
    socket.on("connect") {data, ack in 
     self.socket.emit("new-device-connect", "ascascasc") 
    } 
} 

SERVER:

// start the server if `$ node server.js` 
if (require.main === module) 
app.io = require('socket.io')(app.start()); 
//app.start(); 
app.io.on('connection', function(socket){ 
    console.log("client connected"); 

    socket.on('disconnect', function(){ 
     console.log('user disconnected'); 
    }); 
}); 

瀏覽器客戶端

var socket = io('http://localhost:3000'); 

socket.on('connect', function(){ 
    socket.on("new-device-connect", function(d){ 
     console.log("a new client is connected"); 
    }); 
    socket.on("disconnect", function(){ 

    }); 
}); 

當我在IOS客戶端名稱new-device-connect中發出事件時,我需要在瀏覽器客戶端上調用該事件以顯示新的IOS設備連接特德,但瀏覽器客戶端沒有收到new-device-connect事件。

回答

0

我會在你的服務器上放一個socket.on(「新設備連接」),我沒有做過移動開發,但我認爲你將這些信息傳遞給你的服務器而不是瀏覽器客戶端。然後Socket.io應該正確地將你的調用發送到瀏覽器。

+0

感謝兄弟。今晚我可以輕鬆休息,現在抽菸。我知道我錯過了一些東西。我想如果我從客戶端發出一個事件,那麼服務器和客戶端都會監聽該事件,因爲它們位於相同的套接字和端口上。 –

相關問題