2014-09-11 88 views
0

我想用Heroku部署一個應用程序,但我猜他們不允許使用Socket.IO,所以我必須使用基本的WebSockets。如何將數據發送至特定功能,例如使用Websockets調用特定的函數?

與socket這將是:

// Server 
socket.on('testFunction', function(data) { 
    console.log(data); 
}); 

// Client 
socket.emit('testFunction', 'Hello!'); 

但是從什麼我GOOGLE了所有我能找到的WebSockets是

// Server 
ws.onmessage = function(data) {}; 

// Client 
ws.send('This is a string, what do I do with myself'); 

的任何信息將是巨大的。謝謝!

+0

你需要發明我們自己的信封,json最簡單。使每個發送都需要一個類型和值屬性,然後將這些點連接到事件emiiter,就像socket.io一樣 – dandavis 2014-09-11 00:45:37

回答

1

有關文檔和示例,請參閱here

這裏有一些粗略的等效您Socket.IO例子:

// Server 
ws.onmessage = function(event) { 
    var msg = JSON.parse(event.data); 
    switch(msg.type) { 
    case "testFunction": 
     console.log(msg.text); 
     break; 
    } 
}; 

// Client 
ws.send(JSON.stringify({type: "testFunction", text: "Hello!"})); 
0

你的問題的解決方案取決於您的服務器端代碼。 我解決函數調用問題的方式是將我的數據作爲對象(字符串化)發送到服務器,其中包含控制器和操作屬性。 例如,在僞代碼

var request = {controller: "users", action: "login", params: {username: "loginuser", password: "333"} }; 
socket.emit(JSON.stringify(request)); 

,並在服務器端,我得到控制值,並實例基於一個新的控制器......如新users_controller(),並調用與發送的PARAMS該控制器上的動作從排放。 當然,你需要測試控制器和動作是否存在,處理錯誤等。