如何通过socket.io发送POST或通过socket.io调用feathersjs服务?

时间:2017-03-03 11:58:54

标签: node.js socket.io feathersjs

我有服务(查找,获取,创建,删除),我想通过socket.io调用主题

例如:

用户将聊天消息写入另一个用户。我想数据不是通过请求发送,而是在socket上实时发送,因为在这一刻创建是一个mongoose文件。

它可以吗?如果是,我该怎么做?

以下是我的代码段:(服务器端)

 io.on('connect', function(socket){

   socket.on('message', function(id, msg){
   socket.to(id).emit('chat message', msg);
   });

}))

http://localhost:3030/messages< - 使用mongoose创建文档的REST API的URL。在链接上发送数据后正在创建文档。我需要通过socket.io创建一个文档,而不是请求。

我的意思是这样的:

 io.on('connect', function(socket){

   socket.on('message', function(id, msg){
   socket.to(id).emit('chat message', msg);

   // Socket call a create method of my service
   socket.post('/messages', data);

   });

}))

2 个答案:

答案 0 :(得分:1)

如果您没有使用Feathers as the client,可以找到有关如何通过套接字here呼叫服务的详细文档。

可以通过以下套接字直接创建/messages服务的消息:

var socket = io();

socket.emit('messages::create', {
  "text": "I really have to iron"
}, (error, message) => {
  console.log('Todo created', message);
});

你也可以听这样的创建事件:

var socket = io();

socket.on('messages created', data => console.log('Someone created a new message', data);

socket.emit('messages::create', {
  "text": "I really have to iron"
}, (error, message) => {
  console.log('Todo created', message);
});

答案 1 :(得分:0)

嗯,是的,不是。 Socket.io中没有HTTP / REST风格的动词,但由于你可以发送任何你想要的动词,你可以自己添加动词。

此外,如果您希望采用更加结构化的方式构建实时API,那么您可能需要查看ActionHerp等框架:

除HTTP之外,它还可以使用WebSocket或TCP套接字作为底层传输,并且您可以创建自定义"操作"您可以根据自己的需要进行定制。

现在,如果你想使用Feathers并且你不想使用任何其他东西,那么你可以看一下羽毛袜子:

它是一个Feathers Socket.io实时API提供程序,通过Socket.io实时API公开Feathers服务。它与Feathers 1.x和2.x兼容。你可以使用Socket.io与它进行交互。