2017-03-03 3 views
0

Ich habe einen Service (finden, erhalten, erstellen, entfernen), und ich möchte Thema über Socket.ioWie kann man POST über socket.io senden oder einen feathersjs-Service über socket.io anrufen?

Zum Beispiel nennen:

Ein Benutzer schreibt eine Nachricht auf dem Chat an einem anderen Benutzer. Ich möchte die Daten nicht per Anfrage sondern in Echtzeit an Socket senden, da in diesem Moment ein Dokument von Mungo erstellt wird.

Ist es möglich? Wenn ja, wie kann ich es tun?

Unten ist mein Snippet-Code: (Server-Seite)

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

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

})) 

http://localhost:3030/messages < - URL des REST-api ein Dokument mit Mungo zu schaffen. Nach dem Senden von Daten über den Link wird ein Dokument erstellt. Ich brauche, dass ein Dokument über socket.io erstellt wird, keine Anfrage.

Ich meine etwas wie folgt aus:

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); 

    }); 

})) 

Antwort

1

Wenn Sie nicht Feathers as the client verwenden, finden Sie die ausführliche Dokumentation zum Aufrufen von Diensten über die Sockets here.

A Nachrichten für den /messages Dienst kann über eine Steckdose wie folgt direkt erstellt werden:

var socket = io(); 

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

Sie können auch für jede erstellte Veranstaltung wie diese hören:

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

Das ist es! Ich muss darüber lesen.Danke @Daff – SeaDog

0

Nun, ja und nein. Es gibt keine HTTP/REST-artigen Verben in Socket.io, aber da Sie alles senden können, was Sie wollen, können Sie die Verben selbst hinzufügen.

Zusätzlich, wenn Sie eine strukturierte Art und Weise des Aufbaus Echtzeit-APIs haben wollen, dann können Sie einen Blick auf Frameworks wie ActionHerp nehmen wollen:

Neben HTTP Es kann WebSocket- oder TCP-Sockets als zugrunde liegenden Transport verwenden, und Sie können benutzerdefinierte "Aktionen" erstellen, die Sie an Ihre Bedürfnisse anpassen können.

Nun, wenn Sie wollen Federn verwenden, und Sie wollen nicht, etwas anderes verwenden, dann können Sie einen Blick auf Federn-socketio nehmen:

Es ist eine Feder Socket.io Real-Time-API-Anbieter, der Feathers-Dienste über eine Socket.io-Realtime-API verfügbar macht. Es ist kompatibel mit Feathers 1.x und 2.x. Und Sie können Socket.io verwenden, um damit zu interagieren.

+0

ich eine feathersjs verwenden, ich will nichts anderes hinzufügen. Sie können sagen, dass ich ein Projekt abgeschlossen habe. Ich brauche nur Daten zu senden. – SeaDog

+0

@SeaDog Ich sehe. In diesem Fall sehen Sie meine aktualisierte Antwort. – rsp

+0

Ich habe ein socket.io in meinem Projekt implementiert. Ich meine etwas anderes. Ich habe meine Frage aktualisiert. – SeaDog