|
@@ -14,6 +14,7 @@
|
|
|
|
|
|
|
|
namespace Workerman\Protocols;
|
|
namespace Workerman\Protocols;
|
|
|
|
|
|
|
|
|
|
+use Exception;
|
|
|
use Throwable;
|
|
use Throwable;
|
|
|
use Workerman\Connection\AsyncTcpConnection;
|
|
use Workerman\Connection\AsyncTcpConnection;
|
|
|
use Workerman\Connection\ConnectionInterface;
|
|
use Workerman\Connection\ConnectionInterface;
|
|
@@ -22,7 +23,9 @@ use Workerman\Worker;
|
|
|
use function base64_encode;
|
|
use function base64_encode;
|
|
|
use function bin2hex;
|
|
use function bin2hex;
|
|
|
use function floor;
|
|
use function floor;
|
|
|
|
|
+use function gettype;
|
|
|
use function is_array;
|
|
use function is_array;
|
|
|
|
|
+use function is_scalar;
|
|
|
use function ord;
|
|
use function ord;
|
|
|
use function pack;
|
|
use function pack;
|
|
|
use function preg_match;
|
|
use function preg_match;
|
|
@@ -225,13 +228,17 @@ class Ws
|
|
|
/**
|
|
/**
|
|
|
* Websocket encode.
|
|
* Websocket encode.
|
|
|
*
|
|
*
|
|
|
- * @param string $payload
|
|
|
|
|
|
|
+ * @param mixed $payload
|
|
|
* @param AsyncTcpConnection $connection
|
|
* @param AsyncTcpConnection $connection
|
|
|
* @return string
|
|
* @return string
|
|
|
* @throws Throwable
|
|
* @throws Throwable
|
|
|
*/
|
|
*/
|
|
|
- public static function encode(string $payload, AsyncTcpConnection $connection): string
|
|
|
|
|
|
|
+ public static function encode(mixed $payload, AsyncTcpConnection $connection): string
|
|
|
{
|
|
{
|
|
|
|
|
+ if (!is_scalar($payload)) {
|
|
|
|
|
+ throw new Exception("You can't send(" . gettype($payload) . ") to client, you need to convert it to string. ");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
if (empty($connection->websocketType)) {
|
|
if (empty($connection->websocketType)) {
|
|
|
$connection->websocketType = self::BINARY_TYPE_BLOB;
|
|
$connection->websocketType = self::BINARY_TYPE_BLOB;
|
|
|
}
|
|
}
|