webman/push
webman/push
एक मुफ्त पुश सर्वर प्लगइन है, जो ग्राहक की अधिसूचना प्रणाली पर आधारित है, pusher के साथ संगत है, और इसमें कई क्लाइंट जैसे JS, एंड्रॉइड(java), IOS(swift), IOS(Obj-C), uniapp, .NET, Unity, Flutter, AngularJS आदि शामिल हैं। बैकएंड पुश SDK PHP, Node, Ruby, Asp, Java, Python, Go, Swift आदि का समर्थन करता है। क्लाइंट में हार्टबीट और डिस्कनेक्ट के स्वचालित पुन: संबंध की सुविधा होती है, जिससे यह उपयोग में अत्यधिक सरल और स्थिर बनता है। यह संदेश पुश, चैट और कई अन्य वास्तविक समय संचार परिदृश्यों के लिए उपयुक्त है।
प्लगइन में एक वेब JS क्लाइंट push.js और uniapp क्लाइंट uniapp-push.js
शामिल है, अन्य भाषाओं के क्लाइंट को https://pusher.com/docs/channels/channels_libraries/libraries/ से डाउनलोड किया जा सकता है।
स्थापना
composer require webman/push
क्लाइंट (javascript)
जावास्क्रिप्ट क्लाइंट को शामिल करें
<script src="/plugin/webman/push/push.js"> </script>
क्लाइंट उपयोग (सार्वजनिक चैनल)
// कनेक्शन स्थापित करें
var connection = new Push({
url: 'ws://127.0.0.1:3131', // वेब्सॉक पता
app_key: '<app_key, जो config/plugin/webman/push/app.php में प्राप्त करें>',
auth: '/plugin/webman/push/auth' // सब्सक्रिप्शन प्रमाणीकरण (केवल निजी चैनल के लिए)
});
// मान लीजिए कि उपयोगकर्ता uid 1 है
var uid = 1;
// ब्राउज़र user-1 चैनल के संदेशों की निगरानी करता है, अर्थात् उपयोगकर्ता uid 1 के उपयोगकर्ता के संदेश
var user_channel = connection.subscribe('user-' + uid);
// जब user-1 चैनल पर message इवेंट का संदेश हो
user_channel.on('message', function(data) {
// data में संदेश सामग्री है
console.log(data);
});
// जब user-1 चैनल पर friendApply इवेंट का संदेश हो
user_channel.on('friendApply', function (data) {
// data में मित्र आवेदन से संबंधित जानकारी है
console.log(data);
});
// मान लीजिए कि समूह id 2 है
var group_id = 2;
// ब्राउज़र group-2 चैनल के संदेशों की निगरानी करता है, अर्थात् समूह 2 के समूह संदेश
var group_channel = connection.subscribe('group-' + group_id);
// जब समूह 2 पर message संदेश इवेंट हो
group_channel.on('message', function(data) {
// data में संदेश सामग्री है
console.log(data);
});
टिप्स
ऊपर के उदाहरण में subscribe चैनल की अधिसूचना को लागू करता है,message
friendApply
चैनल पर घटनाएँ हैं। चैनल और घटनाएँ किसी भी स्ट्रिंग हो सकती हैं, सर्वर को पहले से कॉन्फ़िगर करने की आवश्यकता नहीं है।
सर्वर पुश (PHP)
use Webman\Push\Api;
$api = new Api(
// webman के तहत आप सीधे config का उपयोग कर सकते हैं, गैर-webman वातावरण में आपको मैन्युअल रूप से कॉन्फ़िगरेशन दर्ज करना होगा
'http://127.0.0.1:3232',
config('plugin.webman.push.app.app_key'),
config('plugin.webman.push.app.app_secret')
);
// user-1 को सब्सक्राइब करने वाले सभी क्लाइंट को message इवेंट का संदेश भेजें
$api->trigger('user-1', 'message', [
'from_uid' => 2,
'content' => 'नमस्ते, यह संदेश सामग्री है'
]);
निजी चैनल
उपर्युक्त उदाहरण में कोई भी उपयोगकर्ता Push.js के माध्यम से सूचनाएँ प्राप्त कर सकता है, यदि सूचना संवेदनशील है, तो यह सुरक्षित नहीं है।
webman/push
निजी चैनल की अधिसूचना का समर्थन करता है, निजी चैनल private-
से शुरू होते हैं। उदाहरण के लिए
var connection = new Push({
url: 'ws://127.0.0.1:3131', // वेब्सॉक पता
app_key: '<app_key>',
auth: '/plugin/webman/push/auth' // सब्सक्रिप्शन प्रमाणीकरण (केवल निजी चैनल के लिए)
});
// मान लीजिए कि उपयोगकर्ता uid 1 है
var uid = 1;
// ब्राउज़र private-user-1 व्यक्तिगत चैनल के संदेशों की निगरानी करता है
var user_channel = connection.subscribe('private-user-' + uid);
जब क्लाइंट निजी चैनल की सदस्यता लेता है (private-
से शुरू होने वाले चैनल), तो ब्राउज़र एक ajax प्रमाणीकरण अनुरोध भेजेगा (ajax पता new Push में auth पैरामीटर में कॉन्फ़िगर किया गया पता है), डेवलपर यहाँ判断 कर सकते हैं कि वर्तमान उपयोगकर्ता को इस चैनल की निगरानी करने की अनुमति है या नहीं। इस तरह से सदस्यता की सुरक्षा सुनिश्चित होती है।
प्रमाणीकरण के बारे में अधिक जानकारी के लिए
config/plugin/webman/push/route.php
में कोड देखें।
क्लाइंट पुश
उपर्युक्त उदाहरणों में क्लाइंट किसी चैनल की सदस्यता लेता है, सर्वर API इंटरफ़ेस का उपयोग करके पुश करता है। webman/push क्लाइंट के माध्यम से प्रत्यक्ष संदेश पुश का समर्थन करता है।
नोट
क्लाइंट के बीच पुश केवल निजी चैनलों (private-
से शुरू होने वाले चैनल) का समर्थन करते हैं, और क्लाइंट केवलclient-
से शुरू होने वाले घटनाओं को ट्रिगर कर सकते हैं।
क्लाइंट द्वारा इवेंट पुश ट्रिगर करने का उदाहरण
var user_channel = connection.subscribe('private-user-1');
user_channel.on('client-message', function (data) {
//
});
user_channel.trigger('client-message', {form_uid:2, content:"नमस्ते"});
नोट
ऊपर का कोड सभी (वर्तमान क्लाइंट को छोड़कर) कोprivate-user-1
की सदस्यता लेने वाले क्लाइंट कोclient-message
इवेंट का डेटा भेजता है (पुश क्लाइंट खुद द्वारा पुश किए गए डेटा को प्राप्त नहीं करेगा)।
वेबहुक्स
वेबहुक चैनल पर कुछ घटनाओं को प्राप्त करने के लिए होते हैं।
वर्तमान में मुख्य रूप से 2 घटनाएँ हैं:
-
1、channel_added
जब कोई चैनल बिना क्लाइंट ऑनलाइन के एक क्लाइंट के ऑनलाइन आने पर ट्रिगर की जाने वाली घटना, यानी ऑनलाइन घटना -
2、channel_removed
जब किसी चैनल के सभी क्लाइंट ऑफलाइन हो जाते हैं, तो ट्रिगर की जाने वाली घटना, यानी ऑफ़लाइन घटना
टिप्स
ये घटनाएँ उपयोगकर्ताओं की ऑनलाइन स्थिति बनाए रखने में बहुत सहायक होती हैं।नोट
वेबहुक पताconfig/plugin/webman/push/app.php
में कॉन्फ़िगर किया गया है।
वेबहुक घटनाओं को प्राप्त करने और उनके संचालन के लिए कोडconfig/plugin/webman/push/route.php
में देखें।
पृष्ठ को फिर से लोड करने के कारण उपयोगकर्ता के अस्थायी रूप से ऑफलाइन होने को ऑफ़लाइन नहीं माना जाना चाहिए, webman/push विलंबित मूल्यांकन करेगा, इसलिए ऑनलाइन/ऑफ़लाइन घटनाओं में 1-3 सेकंड की देरी हो सकती है।
wss प्रॉक्सी (SSL)
https पर ws कनेक्शन का उपयोग नहीं किया जा सकता है, इसे wss कनेक्शन का उपयोग करना आवश्यक है। ऐसी स्थिति में nginx wss प्रॉक्सी का उपयोग किया जा सकता है, कॉन्फ़िगरेशन इस प्रकार है:
server {
# .... यहाँ अन्य कॉन्फ़िगरेशन को छोड़ दिया गया है ...
location /app/<app_key>
{
proxy_pass http://127.0.0.1:3131;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Real-IP $remote_addr;
}
}
नोट ऊपर के कॉन्फ़िगरेशन में <app_key>
config/plugin/webman/push/app.php
में प्राप्त होता है।
nginx को पुनः प्रारंभ करने के बाद, सर्वर से कनेक्ट करने के लिए निम्नलिखित तरीके का उपयोग करें
var connection = new Push({
url: 'wss://example.com',
app_key: '<app_key, जो config/plugin/webman/push/app.php में प्राप्त करें>',
auth: '/plugin/webman/push/auth' // सब्सक्रिप्शन प्रमाणीकरण (केवल निजी चैनल के लिए)
});
नोट
- अनुरोध पता wss से शुरू होता है
- पोर्ट नहीं लिखें
- SSL प्रमाणपत्र से संबंधित डोमेन कनेक्ट करना आवश्यक है
push-vue.js उपयोग निर्देश
1、push-vue.js फ़ाइल को प्रोजेक्ट निर्देशिका में कॉपी करें, जैसे: src/utils/push-vue.js
2、vue पृष्ठ में शामिल करें
<script lang="ts" setup>
import { onMounted } from 'vue'
import { Push } from '../utils/push-vue'
onMounted(() => {
console.log('घटक पहले ही माउंट हो चुका है')
// webman-push का उदाहरण स्थापित करें
// कनेक्शन स्थापित करें
var connection = new Push({
url: 'ws://127.0.0.1:3131', // वेब्सॉक पता
app_key: '<app_key, जो config/plugin/webman/push/app.php में प्राप्त करें>',
auth: '/plugin/webman/push/auth' // सब्सक्रिप्शन प्रमाणीकरण (केवल निजी चैनल के लिए)
});
// मान लीजिए कि उपयोगकर्ता uid 1 है
var uid = 1;
// ब्राउज़र user-1 चैनल के संदेशों की निगरानी करता है, अर्थात् उपयोगकर्ता uid 1 के उपयोगकर्ता के संदेश
var user_channel = connection.subscribe('user-' + uid);
// जब user-1 चैनल पर message इवेंट का संदेश हो
user_channel.on('message', function (data) {
// data में संदेश सामग्री है
console.log(data);
});
// जब user-1 चैनल पर friendApply इवेंट का संदेश हो
user_channel.on('friendApply', function (data) {
// data में मित्र आवेदन से संबंधित जानकारी है
console.log(data);
});
// मान लीजिए समूह id 2 है
var group_id = 2;
// ब्राउज़र group-2 चैनल के संदेशों की निगरानी करता है, अर्थात् समूह 2 के समूह संदेश
var group_channel = connection.subscribe('group-' + group_id);
// जब समूह 2 पर message संदेश इवेंट हो
group_channel.on('message', function (data) {
// data में संदेश सामग्री है
console.log(data);
});
})
</script>
अन्य क्लाइंट पते
webman/push
pusher के साथ संगत है, अन्य भाषाओं (Java Swift .NET Objective-C Unity Flutter Android IOS AngularJS आदि) के क्लाइंट पते के लिए डाउनलोड लिंक:
https://pusher.com/docs/channels/channels_libraries/libraries/