我尝试使用Heroku部署应用程序,但我猜他们不允许使用Socket.IO,所以我必须使用基本的WebSockets。如何将数据发送到特定功能,例如
使用套接字将是:
// Server
socket.on('testFunction', function(data) {
console.log(data);
});
// Client
socket.emit('testFunction', 'Hello!');
但是,根据我用Google搜索的内容,我可以找到的是
// Server
ws.onmessage = function(data) {};
// Client
ws.send('This is a string, what do I do with myself');
任何信息都会很棒。谢谢!
答案 0 :(得分: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!"}));
答案 1 :(得分:0)
问题的解决方案取决于您的服务器端代码。 我解决函数调用问题的方法是将我的数据作为对象(字符串化)发送到服务器,包含控制器和操作属性。 例如伪代码
var request = {controller: "users", action: "login", params: {username: "loginuser", password: "333"} };
socket.emit(JSON.stringify( request) );
并且在服务器端我得到控制器值,并基于它实例化一个新控制器...例如new users_controller(),并使用从emit发送的参数调用该控制器上的操作。 当然,您需要测试控制器和操作是否存在,处理错误等。