定制 mwstake/mediawiki-component-wire 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

mwstake/mediawiki-component-wire

最新稳定版本:1.0.8

Composer 安装命令:

composer require mwstake/mediawiki-component-wire

包简介

Real time messaging

README 文档

README

This component uses mwstake/mediawiki-component-token-authenticator for client authentication. Configure salt to be used to sign tokens issued to the wire service. Same value must be configured on webservice-wire side (TOKEN_SALT env var)

$GLOBALS['mwsgTokenAuthenticatorSalt'] = '<unique string>';

Url of webservice-wire service

$GLOBALS['mwsgWireServiceUrl'] = '';
$GLOBALS['mwsgWireServiceAllowInsecureSSL'] = false;

API-key used for HTTP communication with webservice-wire service. Same key must be configured on webservice-wire side (API_KEY env var)

$GLOBALS['mwsgWireServiceApiKey'] = '';

Note: If using Insecure SSL you need to visit mwsgWireServiceUrl in browser and manually "trust" it, so that websocket can establish connection

Usage

Sending message

In application

    $channel = ( new \MWStake\MediaWiki\Component\Wire\WireChannelFactory() )->getChannelForPage( $title );
    $channel = ( new \MWStake\MediaWiki\Component\Wire\WireChannelFactory() )->getChannelForUser( $user );
    $channel = ( new \MWStake\MediaWiki\Component\Wire\WireChannelFactory() )->getGlobalChannel();

    $message = new \MWStake\MediaWiki\Component\Wire\WireMessage(
        $channel,
        [ 'arbitrary' => 'payload' ]
    );
    // or, for creating Wire messages from MW Message object, you can use:
    $message = \MWStake\MediaWiki\Component\Wire\WireMessage::newFromLocalizationMessage(
        \MediaWiki\Message\Message::newFromKey( 'my-text', [ 'a', 'b' ] ),
        $channel
    )

    /** @var \MWStake\MediaWiki\Component\Wire\WireMessenger $messenger */
    $messenger = \MediaWiki\MediaWikiServices::getInstance()->getService( 'MWStake.Wire.Messenger' );
    $messenger->send( $message );

Client-side

const channel = mws.wire.getCurrentPageChannel();
const message = new mws.wire.Message( channel, { arbitrary: 'payload' } );
mws.wire.send( message );

Listening for messages

In application

// Global var
$GLOBALS['mwsgWireListeners'][] = [
    'class' => MyListener::class,
    'services' => [ ... ]
];

// Or hook
$GLOBALS['wgHooks']['MWStakeWireListeners'][] = static function( \MWStake\MediaWiki\Component\Wire\WireListenerRegistry $registry ) {
    $registry->register( new MyListener() );
};

// Class...
class MyListener implements \MWStake\MediaWiki\Component\Wire\WireListener {
    public function onWireMessage( \MWStake\MediaWiki\Component\Wire\WireMessage $message ) {
        // Handle message
    }
}

class MyListener implements \MWStake\MediaWiki\Component\Wire\Listener\WireListenerOnPage {
    public function getPageToListenOn() {
        return $title; // Title to listen for messages on, or null for all pages
    }
    public function onWireMessage( \MWStake\MediaWiki\Component\Wire\WireMessage $message ) {
        // Handle message for a page
    }
}

Client-side

mws.wire.listen( mws.wire.getCurrentPageChannel(), function( payload ) {
	mw.notify( mw.msg( payload.mymsgkey ) );
} );

统计信息

  • 总下载量: 395
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: GPL-3.0-only
  • 更新时间: 2025-08-14