定制 gemblue/php-websocket 二次开发

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

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

gemblue/php-websocket

Composer 安装命令:

composer require gemblue/php-websocket

包简介

Simple websocket library for learning purpose

README 文档

README

Simple PHP Websocket Library / Server for Fun. Just making a wrapper from PHP Socket API. Modifying source code from reference and making simple OOP for a clean code.

Dependency

PHP Socket Library https://www.php.net/manual/en/book.sockets.php

Install

Create a exercise folder. Open it and run composer require.

composer require gemblue/php-websocket

Run Server

  • Make server file executable
sudo chmod +x ./vendor/gemblue/php-websocket/bin/server
  • Run websocket server with port option
./vendor/gemblue/php-websocket/bin/server port:3000

Then it will show success output like

Listening incoming request on port 3000 ..

Prepare client.

Create a HTML file for websocket client, for example index.html :

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">

<div class="container">

	<div class="card mt-5 mb-3">
		<div class="card-body">
			<div id="output"></div>
		</div>
	</div>

	<div class="form-group">
		<label>Nama</label>
		<input id="name" class="form-control"/>
	</div>

	<div class="form-group">
		<label>Pesan</label>
		<textarea id="message" class="form-control"></textarea>
	</div>

	<button id="btn-send" class="btn btn-success">Send</button>

</div>

<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>

<script>  
	function showMessage(messageHTML) {
		$('#output').append(messageHTML);
	}

	$(document).ready(function(){
		var websocket = new WebSocket("ws://127.0.0.1:3000");
		websocket.onopen = function(event) {
			showMessage("<div class='text-success'>Berhasil masuk room ..</div>");		
		}
		websocket.onmessage = function(event) {
			var Data = JSON.parse(event.data);
			showMessage("<div>"+Data.message+"</div>");
			$('#message').val('');
		};
		
		websocket.onerror = function(event){
			showMessage("<div>Problem due to some Error</div>");
		};
		websocket.onclose = function(event){
			showMessage("<div>Connection Closed</div>");
		}; 
		
		$('#btn-send').on("click",function(event){
			event.preventDefault();
			var messageJSON = {
				name: $('#name').val(),
				message: $('#message').val()
			};
			websocket.send(JSON.stringify(messageJSON));
		});
	});
</script>

Open index.html with your browser. Use 2 tab/browser for simulation. Output will be like this :

Sample

Reference

gemblue/php-websocket 适用场景与选型建议

gemblue/php-websocket 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 66 次下载、GitHub Stars 达 18, 最近一次更新时间为 2020 年 05 月 14 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 gemblue/php-websocket 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 gemblue/php-websocket 我们能提供哪些服务?
定制开发 / 二次开发

基于 gemblue/php-websocket 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

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

GitHub 信息

  • Stars: 18
  • Watchers: 3
  • Forks: 11
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2020-05-14