使用Websockets调用特定函数?

时间:2014-09-11 00:42:26

标签: javascript html5 websocket

我尝试使用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');

任何信息都会很棒。谢谢!

2 个答案:

答案 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发送的参数调用该控制器上的操作。 当然,您需要测试控制器和操作是否存在,处理错误等。