0

node 和 websockets 的新手,我正在尝试创建一些不同于典型游戏或聊天应用程序的东西。

我需要能够将一些变量发布到操作中,执行一些查找,然后使用找到的变量连接到客户端。我真的不知道这是否可能。

我遇到的主要问题是我没有典型的 js 客户端,没有浏览器,nada。我唯一的客户是 python websocket 客户。我有这些连接到服务器的好...嗯,他们可以 ping 服务器 - 我正在尝试使用 Socket.io、Faye 和 Worlize。我更喜欢使用 socket.io。

例如,如果我发布这个:

 curl -X POST 'http://localhost:8080/timeout?id=1238763876&time=27365716576&bla=stuff' 

在我的 app.js 中,我有这样的东西(缺少一些位,我的 socket.io 示例):

app.get('/', function (req, res) {
  res.sendfile(__dirname + '/public/index.html');
});

app.post('/timeout', function (req, res) {

  //Find socket, not implemented yet

  console.log('I received a private message by ', from, ' saying ', msg);

  io.sockets.on('connection', function (socket) {
    io.sockets.emit('this', { will: 'be received by everyone'});        
  });

});

server.listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

该路线有效,但是当我发布时,我没有遇到任何问题,也没有错误 - 就像我说的,我是 Rails 的 Node 新手。我希望这是直截了当的事情。

有可能做这样的事情吗?这是解决方法还是我应该尝试其他方法。

4

1 回答 1

2

通过以下方式解决了这个问题:

app.post('/commands/:action/:to', function (req, res) {
 target_socket = connections[req.params.to] 
 if (target_socket) {
   console.log(req.query)
   io.sockets.socket(target_socket.id).emit('name', 'stuff');
   res.send(200);
 }
 else
  res.send(404);
});

灵感来自这个网站..

于 2013-06-24T14:12:37.623 回答