怎么web连上以后显示无法连接到服务器,刚接触socket,服务端已经开始监听了,但是websocket 无法连接到服务器,请问是什么原因呢?...

本文介绍了使用JavaScript创建WebSocket客户端连接到服务器,并在连接成功后发送消息。同时展示了PHP如何建立一个监听特定端口的服务器,接收并处理来自客户端的连接和数据。涉及关键概念包括socket连接、数据收发及握手协议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

bVbeod7?w=282&h=63

bVbeod9?w=618&h=38

bVbeoea?w=991&h=53

js代码:

var socket = new WebSocket('ws://47.94.80.240:12345');

socket.onopen = function (evt) {

console.log("socket连接成功");

//提醒上线

var mes = {

type: 1

}

socket.send(JSON.stringify(mes));

};

部分php代码:

public function startServer()

{

// $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

$this->master = socket_create_listen($this->port);

if (!$this->master) {

throw new \Exception('listen $this->port fail !');

}

$this->runLog("Server Started : " . date('Y-m-d H:i:s'));

$this->runLog("Listening on : 47.94.80.240 port " . $this->port);

$this->runLog("Master socket : " . $this->master . "\n");

self::$connectPool[] = $this->master;

while (true) {

$readFds = self::$connectPool;

//阻塞接收客户端链接

@socket_select($readFds, $writeFds, $e = ull, $this->timeout);

foreach ($readFds as $socket) {

//当前链接 是主进程

if ($this->master == $socket) {

$client = socket_accept($this->master); //接收新的链接

$this->handShake = false;

if ($client < 0) {

$this->log('clinet connect false!');

continue;

} else {

//超过最大连接数

if (count(self::$connectPool) > self::$maxConnectNum)

continue;

//加入连接池

$this->connect($client);

}

} else {

//不是主进程,开始接收数据

$bytes = @socket_recv($socket, $buffer, 2048, 0);

//未读取到数据

if ($bytes == 0) {

$this->disConnect($socket);

} else {

//未握手 先握手

if (!$this->handShake) {

$this->doHandShake($socket, $buffer);

} else {

//如果是已经握完手的数据,广播其发送的消息

$buffer = $this->decode($buffer);

$this->parseMessage($buffer, $socket);

}

}

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值