FeathersJS官方文檔閱讀筆記(七)

realtime

realtime意味著什么

realtime意味著,當一個 create,update,patch或 remove 的服務方法完成時,services會自動發(fā)送created,updated,patched 或 removed 事件。客戶端可以偵聽到這些事件并作相應處理。

當請求被服務處理完,相應的事件會發(fā)射出去。

Feathers 的websocket并不是只用來在服務端和客戶端間發(fā)送事件,也可以用來在服務器和服務期間或服務器和客戶端間調(diào)用服務方法或發(fā)送數(shù)據(jù)。這比REST API要快。

目前Feathers支持兩個websocket傳輸庫,socket.io 與 Primus。

Socket.io

1.安裝。

$ npm install feathers-socketio

它支持實時雙向、基于事件的通信,可用在多個平臺、瀏覽器或設(shè)備,均衡速度和可靠性。

2.服務端。

一旦調(diào)用app.listen(),可以用過app.io()獲取Socket.io對象。著這個地方可以方便地監(jiān)聽自定義事件或者添加認證。

const feathers = require('feathers');

const socketio = require('feathers-socketio');

const app = feathers()

.configure(socketio(function(io) {

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

socket.emit('news', { text: 'A client connected!' });

socket.on('my other event', function (data) {

console.log(data);

});

});

// Registering Socket.io middleware

io.use(function (socket, next) {

// Exposing a request property to services and hooks

socket.feathers.referrer = socket.request.referrer;

next();

});

}));

app.listen(3030);

中間件和服務參數(shù)。

和REST provider中間件相似,Socket.io 中間件可以修改Feathers關(guān)于socket的屬性,來作為服務的參數(shù)。

app.configure(socketio(function(io) {

io.use(function (socket, next) {

socket.feathers.user = { name: 'David' };

next();

}

app.use('messages', {

create(data, params, callback) {

// When called via SocketIO:

params.provider // -> socketio

params.user // -> { name: 'David' }

}

};

3.客戶端。[待補]

Primus

1.安裝。

$ npm install feathers-primus ws

2.服務端。

導入模塊,并把primus(configuration [, fn])傳到app.configure中。

const feathers = require('feathers');

const primus = require('feathers-primus');

const app = feathers().configure(primus({

transformer: 'websockets'

}));

app.listen(3030);

中間件和服務參數(shù)

類似于REST和SocketIO,Primus的請求對象也有一個可以在認證中被服務參數(shù)繼承的屬性。

app.configure(primus({

transformer: 'sockjs'

}, function(primus) {

// Do something with primus

primus.before('todos::create', function(socket, done){

// Exposing a request property to services and hooks

socket.request.feathers.referrer = socket.request.referrer;

done();

});

app.use('messages', {

create(data, params, callback) {

// When called via Primus:

params.provider // -> primus

params.user // -> { name: 'David' }

}

};

3.客戶端[待補]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容