2017-03-03 153 views
0

我有一個服務(發現,獲取,創建,刪除),我想通過socket.io如何通過socket.io發送POST或通過socket.io調用feathersjs服務?

調用主題例如:

用戶聊天寫一條消息給其他用戶。我想數據不是通過請求發送,而是實時在套接字上,因爲在這一刻創建的是貓鼬的文件。

它是否可行?如果是,我該怎麼辦?

下面是我的代碼片段:(服務器端)

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

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

})) 

http://localhost:3030/messages < - 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); 

    }); 

})) 

回答

1

如果您不使用Feathers as the client,您可以找到有關如何通過插座呼叫服務的詳細文檔here

/messages服務A的消息可以直接通過插座來創建這樣的:

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); 
}); 
+0

就是這樣!我必須閱讀它。謝謝@Daff – SeaDog

0

好,yes和no。在Socket.io中沒有HTTP/REST風格的動詞,但既然你可以發送任何你想要的東西,你可以自己添加動詞。

此外,如果你想擁有構建實時API的更結構化的方式,那麼你可能想看看框架,如ActionHerp:

除了HTTP它可以使用WebSocket或TCP套接字作爲底層傳輸,並且您可以創建自定義的「操作」,您可以根據需要進行自定義。現在

,如果你想用羽毛和你不想使用別的東西,那麼你可以看看羽毛,socketio:

這是一個羽毛Socket.io實時API提供程序,通過Socket.io實時API公開Feathers服務。它與羽毛1.x和2.x兼容。你可以使用Socket.io與它進行交互。

+0

我使用feathersjs,我不想添加任何其他東西。你可以說我有一個完整的項目。我只需要發送一個數據。 – SeaDog

+0

@SeaDog我明白了。在這種情況下,看到我更新的答案。 – rsp

+0

我在我的項目中實現了一個socket.io。我的意思是別的。我更新了我的問題。 – SeaDog