我是最近開始使用Socket.IO的iOS開發人員。在iOS應用程序的生命週期中,我的服務器將從我的應用程序作爲客戶端接收消息,但是對於特定情況,服務器還需要從作爲客戶端的Web瀏覽器接收消息。我正在測試一個非常基本的瀏覽器用戶界面,其中包含一個文本字段和一個按鈕,在該按鈕的點擊上,數字代碼(已輸入文本字段)需要發送到服務器。這看起來是這樣的:未調用Socket.IO客戶端事件處理程序?
<form>
Code:<br>
<input type="text" id="code" name="code"><br>
<input type="submit" id="validatebutton" value="Validate">
<script src="/socket.io-client/dist/socket.io.js"></script>
<script>
document.getElementById("validatebutton").onclick = function() {
var socket = io('http://localhost:3000');
socket.on('connect', function(clientSocket) {
clientSocket.emit('validateCode', document.getElementById("code"));
});
};
</script>
</form>
連接工作正常。當我運行此代碼時,客戶端成功連接到偵聽套接字服務器。唯一的問題是事件處理程序沒有執行。我可能會很在這裏下車,但我去的是一個客戶端事件處理程序,它包含在斯威夫特SDK:
self.socket.on(clientEvent: .connect, callback: { (data:[Any], ack:SocketAckEmitter) in
// Do something here
})
self.socket.connect()
我只是假設JavaScript客戶端有一個客戶端事件處理(命名爲'connect'
),這是客戶端在連接到服務器的時候收到的。就像我說的,我可能會在這裏離開。我只是按照他們網站上發佈的Socket.IO文檔,告訴我這樣做。如果有人能告訴我我錯過了什麼,或者我做錯了什麼,那將會非常感激。對不起,我真的不知道還有什麼可以轉身的,因爲官方文檔非常模糊,Stack上的另一個問題對我來說有點過分了。
謝謝,它的工作!它確實改變了這個過程,因爲我最初是爲了快速連接,客戶端只發出消息,然後立即斷開與服務器的連接,這就是套接字連接最初在'onclick'函數內的原因。儘管如此,這也同樣有效,所以這一切都很好。此外,據我可以讀取任何有關它,Javascript客戶端似乎不具有'.connect'和'.disconnect'函數,不像Swift客戶端,所以我可能不會只是斷開後無論如何發出消息。 –
最後一個(無關)問題:如何向多個連接的客戶端發送消息?我知道如何向特定的客戶端發送消息,但是是否也可以傳遞一組客戶端來發送消息?現在我想(在服務器端):'io.to(sockets.join())。emit(「myMessage」,someData);'但這似乎沒有做任何事情。奇怪的是,我也沒有得到一個錯誤,所以我完全不知道這是錯的還是正確的。 –
這裏是一個node.js的例子。在服務器端發送給所有的客戶端,你可以做一些簡單的事情,比如'var io = require('socket.io')(http);'然後'io.emit(「myIdentifier」,myData);'。至於發送給只有一部分連接的客戶端,我不確定我的頭頂,對不起。 –