使用Ratchet WebSocket,我试图显示已发送消息的时间戳。我在onmessage回调中的console.log(e)
,我得到一个对象:
{
//... rest of the keys
timeStamp: 353443
}
考虑到我在13:48发送它,我认为这看起来很奇怪。奇怪的是,在此之前,我在最后一小时内发出了一个请求,它返回了一个5位数的timeStamp,这让我的研究变得更加艰难。
我试着在Ratchet文档中查找该字段,但找不到任何内容。我立即尝试通过在线转换它来查看它是否是UNIX时间戳,但所有值都返回
一些1970年1月1日:时间
如何将返回的timeStamp转换为d/m/y H:i
?我无法找到它可能采用的格式或转换方式。
目前我有(在我的jQuery中):
new Date(data.timeStamp*1000)
但它返回1月1日的事情。
我试过两次:
2018年9月6日星期四14:03 :(秒大约是13) 2018年9月6日星期四14:19:24
这产生了这些时间戳(分别):
0 1 2 3 3 8 4 2 1 9 5 6 8 3
(显示没有空格)
(注意:前导0不在输出中 - 仅用于列比较)
我尝试比较两者,除了Minute和第二个之外的所有内容应该是相同的,但是 - 只有两列匹配。
我怎么可能想到它(但事实证明它不能基于结果有多么不同):
周四有可能是3或4,取决于编码器是否将星期日或星期一设置为0
第六,逻辑上应该只相当于6
如果jan = 0,则9月可以是8
2018年可能是18岁
如果12小时标志设置为am / pm,则14可以是2
这是我的Chat.php类:
<?php
namespace App;
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;
class Chat implements MessageComponentInterface
{
protected $clients;
public function __construct()
{
$this->clients = new \SplObjectStorage;
}
public function onOpen(ConnectionInterface $conn)
{
$this->clients->attach($conn); # store new con to send msg later
echo 'New Connection! '. $conn->resourceId ."\n";
}
public function onMessage(ConnectionInterface $from, $msg)
{
$numRecv = count($this->clients) - 1;
echo sprintf(
'Connection %d sending message "%s" to %d other connection%s'. "\n",
$from->resourceId, $msg, $numRecv, $numRecv == 1 ? '' : 's'
);
foreach ($this->clients as $client)
{
if ($from !== $client) {
$client->send($msg); # sender is not receiver, send to each client connected
}
}
}
public function onClose(ConnectionInterface $conn)
{
$this->clients->detach($conn); # con is closed, rm it, can no longer send it a msg
echo 'Connection '. $conn->resourceId .' has disconnected'. "\n";
}
public function onError(ConnectionInterface $conn, \Exception $e)
{
echo 'An error has occurred: '. $e->getMessage() ."\n";
$conn->close();
}
}
和我的chat-server.php
<?php
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use App\Chat;
require dirname(__DIR__). '/vendor/autoload.php';
$server = IoServer::factory(
new HttpServer(
new WsServer(
new Chat()
)
),
8080
);
$server->run();
链接到项目:http://socketo.me/
我在数字周围做了一些数学计算:
2195683 - 123384 = 2072299
14:03:13和14:19:24之间的差异是16分11秒
不知何故,16分11秒大致相当于2072299
好的,我比较了4个新日期:
星期四06年9月6日15:26:40
星期四06年9月6日15:31:03
2018年9月6日星期四16:26:40
星期四06年9月6日16:31:03
我有理论认为时间可能是从某个时间开始的,所以26:40
将始终与从小时开始的X微秒相同。结果如下:
星期四06年9月6日15:26:40 40491
星期四06年9月6日15:31:03 303762
2018年9月6日星期四16:26:40 1351367
星期四06年9月6日16:31:03 1614388
我决定解决它们之间的差异,所有这些都是4分23秒,但是这样做:
303762 - 40491 = 263271
和
1614388 - 1351367 = 263021
差异为250。
我还比较了两个小时:
1351367 - 40491 = 1310876
和
1614388 - 303762 = 1310626
这又相差250。
所以没有多少时间是相同的,这让我怀疑它确实是从某个时间而不是现在的时间。
然后我决定间隔1秒做:
21 = 2232366
22 = 2233365
23 = 2234333
前4个数字的增量可能是预期的(在1s内),但随后它变为66,65,33 ......这是如何产生的?
谢谢,