如何通过 socket.io 发送 POST 或通过 socket.io 调用 feathersjs 服务?
How can to send POST via socket.io or call a feathersjs service via socket.io?
我有一项服务(查找、获取、创建、删除),我想通过 socket.io
调用主题
例如:
一个用户在聊天中给另一个用户写了一条消息。我希望数据不是通过请求发送的,而是在套接字上实时发送的,因为此时创建的是猫鼬的文档。
可能吗?如果可以,我该怎么做?
下面是我的代码片段:(服务器端)
io.on('connect', function(socket){
socket.on('message', function(id, msg){
socket.to(id).emit('chat message', msg);
});
}))
http://localhost:3030/messages <-- URL of REST api 使用猫鼬创建文档。在 link 上发送数据后正在创建文件。我需要通过 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);
});
}))
好吧,是也不是。 Socket.io 中没有 HTTP/REST-style 个动词,但由于您可以发送任何想要的内容,因此您可以自己添加动词。
此外,如果您想以更结构化的方式构建实时 APIs,那么您可能想看看像 ActionHerp 这样的框架:
除了 HTTP 之外,它还可以使用 WebSocket 或 TCP 套接字作为底层传输,并且您可以创建自定义 "actions",您可以根据需要进行自定义。
现在,如果你想使用 Feathers 而不想使用其他任何东西,那么你可以看看 feathers-socketio:
它是一个 Feathers Socket.io 实时 API 提供程序,通过 Socket.io 实时 API 公开 Feathers 服务。它与 Feathers 1.x 和 2.x 兼容。您可以使用 Socket.io 与其进行交互。
如果您没有使用 Feathers as the client you can find the detailed documentation about how to call services via sockets 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);
});
我有一项服务(查找、获取、创建、删除),我想通过 socket.io
调用主题例如:
一个用户在聊天中给另一个用户写了一条消息。我希望数据不是通过请求发送的,而是在套接字上实时发送的,因为此时创建的是猫鼬的文档。
可能吗?如果可以,我该怎么做?
下面是我的代码片段:(服务器端)
io.on('connect', function(socket){
socket.on('message', function(id, msg){
socket.to(id).emit('chat message', msg);
});
}))
http://localhost:3030/messages <-- URL of REST api 使用猫鼬创建文档。在 link 上发送数据后正在创建文件。我需要通过 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);
});
}))
好吧,是也不是。 Socket.io 中没有 HTTP/REST-style 个动词,但由于您可以发送任何想要的内容,因此您可以自己添加动词。
此外,如果您想以更结构化的方式构建实时 APIs,那么您可能想看看像 ActionHerp 这样的框架:
除了 HTTP 之外,它还可以使用 WebSocket 或 TCP 套接字作为底层传输,并且您可以创建自定义 "actions",您可以根据需要进行自定义。
现在,如果你想使用 Feathers 而不想使用其他任何东西,那么你可以看看 feathers-socketio:
它是一个 Feathers Socket.io 实时 API 提供程序,通过 Socket.io 实时 API 公开 Feathers 服务。它与 Feathers 1.x 和 2.x 兼容。您可以使用 Socket.io 与其进行交互。
如果您没有使用 Feathers as the client you can find the detailed documentation about how to call services via sockets 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);
});