我有服务(查找,获取,创建,删除),我想通过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);
});
}))
答案 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与它进行交互。