2014-09-11 29 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该控制器上的动作从排放。 当然,你需要测试控制器和动作是否存在,处理错误等。