1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- <?php
- /**
- * Copyright (C) 2014-2022 Textalk/Abicart and contributors.
- *
- * This file is part of Websocket PHP and is free software under the ISC License.
- * License text: https://raw.githubusercontent.com/Textalk/websocket-php/master/COPYING
- */
- namespace WebSocket\Message;
- use DateTime;
- abstract class Message
- {
- protected $opcode;
- protected $payload;
- protected $timestamp;
- public function __construct(string $payload = '')
- {
- $this->payload = $payload;
- $this->timestamp = new DateTime();
- }
- public function getOpcode(): string
- {
- return $this->opcode;
- }
- public function getLength(): int
- {
- return strlen($this->payload);
- }
- public function getTimestamp(): DateTime
- {
- return $this->timestamp;
- }
- public function getContent(): string
- {
- return $this->payload;
- }
- public function setContent(string $payload = ''): void
- {
- $this->payload = $payload;
- }
- public function hasContent(): bool
- {
- return $this->payload != '';
- }
- public function __toString(): string
- {
- return get_class($this);
- }
- // Split messages into frames
- public function getFrames(bool $masked = true, int $framesize = 4096): array
- {
- $frames = [];
- $split = str_split($this->getContent(), $framesize) ?: [''];
- foreach ($split as $payload) {
- $frames[] = [false, $payload, 'continuation', $masked];
- }
- $frames[0][2] = $this->opcode;
- $frames[array_key_last($frames)][0] = true;
- return $frames;
- }
- }
|