Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

gemblue/PHPWebsocket

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

32 Commits

Repository files navigation

PHPWebsocket

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

About

Simple PHP Websocket Library / Server for Fun

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /