websocket-server

授权协议 MIT License
开发语言 PHP
所属分类 Web应用开发、 WebSocket开发包
软件类型 开源软件
地区 不详
投 递 者 柯英奕
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Websocket Server

This library provides a Request Handler to easily handle Websocketconnections using amphp/http-server.

Installation

This package can be installed as a Composer dependency.

composer require amphp/websocket-server

Currently this library is undergoing a RC phase on a push to 2.0! Please check out the 2.0 RC and let us know if you have any feedback.

Documentation

The documentation for this library is currently a work in progress. Pull Requests to improve the documentation are always welcome!

Requirements

  • PHP 7.2+

Example

<?php

// Note that this example requires:
// amphp/http-server-router
// amphp/http-server-static-content
// amphp/log

use Amp\Http\Server\HttpServer;
use Amp\Http\Server\Request;
use Amp\Http\Server\Response;
use Amp\Http\Server\Router;
use Amp\Http\Server\StaticContent\DocumentRoot;
use Amp\Log\ConsoleFormatter;
use Amp\Log\StreamHandler;
use Amp\Loop;
use Amp\Promise;
use Amp\Socket\Server;
use Amp\Success;
use Amp\Websocket\Client;
use Amp\Websocket\Message;
use Amp\Websocket\Server\ClientHandler;
use Amp\Websocket\Server\Gateway;
use Amp\Websocket\Server\Websocket;
use Monolog\Logger;
use function Amp\ByteStream\getStdout;
use function Amp\call;

require __DIR__ . '/vendor/autoload.php';

$websocket = new Websocket(new class implements ClientHandler {
    private const ALLOWED_ORIGINS = [
        'http://localhost:1337',
        'http://127.0.0.1:1337',
        'http://[::1]:1337'
    ];
    
    public function handleHandshake(Gateway $gateway, Request $request, Response $response): Promise
    {
        if (!\in_array($request->getHeader('origin'), self::ALLOWED_ORIGINS, true)) {
            return $gateway->getErrorHandler()->handleError(403);
        }

        return new Success($response);
    }

    public function handleClient(Gateway $gateway, Client $client, Request $request, Response $response): Promise
    {
        return call(function () use ($gateway, $client): \Generator {
            while ($message = yield $client->receive()) {
                \assert($message instanceof Message);
                $gateway->broadcast(\sprintf(
                    '%d: %s',
                    $client->getId(),
                    yield $message->buffer()
                ));
            }
        });
    }
});

Loop::run(function () use ($websocket): Promise {
    $sockets = [
        Server::listen('127.0.0.1:1337'),
        Server::listen('[::1]:1337'),
    ];

    $router = new Router;
    $router->addRoute('GET', '/broadcast', $websocket);
    $router->setFallback(new DocumentRoot(__DIR__ . '/public'));

    $logHandler = new StreamHandler(getStdout());
    $logHandler->setFormatter(new ConsoleFormatter);
    $logger = new Logger('server');
    $logger->pushHandler($logHandler);

    $server = new HttpServer($sockets, $router, $logger);

    return $server->start();
});
  • 上一篇文章中,咱们已经成功搭建了咱们的 websocket 服务器,并能够与服务器之间成功通信,本篇文章将带领大家实现任何地方都能对用户发送消息 1、原理解析 tio-websocket-server 中对用户发送消息的方法如下: Tio.sendToUser(channelContext.tioConfig, userId, wsResponse); channelContext.tioCon

  • using System; using System.Collections.Generic; using System.Windows.Forms; using Newtonsoft.Json; using WebSocketSharp; using WebSocketSharp.Server; namespace PrintPlugin { public partial class

  • 代码: https://github.com/AltairCA/.netcore2.0-websocketServerExample   查找安装:WebSocketSharp 解析包:这个可以: /// <summary> /// 解析客户端发送来的数据 /// </summary> /// <returns>The data.</returns> /// <param name="recByt

  • 1、错误信息 在使用springboot单元测试出现: Caused by: java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available at org.springframework.util.Assert.state(Assert.java:73) at org.springfra

  • server.py #!/usr/bin/env python3 import asyncio import websockets class App: def __init__(self): self._task = None self._slots = [] async def worker(self, websocket, path):

  • 最近在项目中有一个场景,在内网的应用需要接受外网应用的指令。有两种解决方案: 1.内网应用轮询外网应用,http请求指令 2.内网应用与外网应用之间建立websocket长连接 记录一下websocket server/client的java实现 一、websocket server @Configuration public class WebSocketConfig extends Confi

  • 1、问题描述 在 SpringBoot 项目中集成了 WebSocket,当进行 SpringBoot 单元测试时报错: javax.websocket.server.ServerContainer not available 报错的方法是: @Bean public ServerEndpointExporter serverEndpointExporter(){ re

  • ws搭建websocket服务器 ws模块安装 npm install ws ws官方 uuid模块安装 npm install uuid uuid官方 //搭建ws服务器 const WebSocket = require('ws'); const WebSocketServer = require('ws').Server; const wss = new WebSocke

  • 因为这个错误我花费了一下午的时间,就是为了在 springboot 中集成websocket 太难的 网上大多数的回答都是测试时报错,我是启动时报错,废话不说了,直接进入主题 环境情况 springboot:2.2.13 acitiviti6 websocket 2.报错信息 org.springframework.beans.factory.BeanCreationException: Erro

  • 使用okhttp连接websocket 1、引入okhttp库 implementation 'com.squareup.okhttp3:okhttp:3.11.0' 2、布局文件 <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http

 相关资料
  • WebSockets是Web应用程序的下一代双向通信技术,可在单个套接字上运行,并通过HTML 5兼容浏览器中的JavaScript接口公开。 一旦与Web服务器建立Web Socket连接,就可以通过调用send()方法将数据从浏览器发送到服务器,并通过onmessage事件处理程序从服务器接收数据到浏览器。 以下是创建新WebSocket对象的API。 var Socket = new Web

  • ?> 通过内置的WebSocket服务器支持,通过几行PHP代码就可以写出一个异步IO的多进程的WebSocket服务器。 $server = new Swoole\WebSocket\Server("0.0.0.0", 9501); $server->on('open', function (Swoole\WebSocket\Server $server, $request) { ec

  • webSockets 是一种创建持久性的连接,并进行双向数据传输的 HTTP 通信协议。Weex 提供了 webSockets 模块方便用户在 H5/iOS/Android 环境下与服务端创建 webSockets 链接进行通信。 注意 h5 提供 WebSockets 的 protocol 默认实现,iOS 和 Android 需要自定义实现,Android 可参考: DefaultWebSoc

  • WebSocket 服务基于现有 swoole ws server 上的进一步封装实现。即开启 websocket 服务的同时可以处理 http 请求。 安装 Composer 安装 composer require swoft/websocket-server Git 仓库 Github https://github.com/swoft-cloud/swoft-websocket-server

  • Swoole框架提供了WebSocket协议的实现。具体代码可以参考 examples/websocket_server.php和examples/websocket_client.hml。 如何使用 应用程序代码只需要继承 Swoole\Network\Protocol\WebSocket,并实现onMessage方法即可。onMessage方法在服务器端收到客户端消息时回调。Swoole框架已

  • 本章涵盖了如下内容: WebSockets ChannelHandler, Decoder 和 Encoder 引导你的应用程序 real-time web(实时web)是一组技术和实践,使用户能够实时地接收 到作者发布的信息,而不需要用户用他们的软件定期检查更新源。 HTTP 的请求/响应的设计并不能满足实时的需求,而 WebSocket 协议从设计以来就提供双向数据传输,允许客户和服务器在任何