在PHP上以与Node.js类似的方式使用套接字

时间:2018-11-03 02:48:09

标签: javascript php node.js websocket socket.io

我刚刚下载并运行了非常基本的Node.js聊天应用程序:

https://github.com/socketio/chat-example

它正常工作。

服务器代码非常简单:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var port = process.env.PORT || 3000;

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket){
  socket.on('chat message', function(msg){
    io.emit('chat message', msg);
  });
});

http.listen(port, function(){
  console.log('listening on *:' + port);
});

现在我的问题是,是否可以使用PHP做类似的事情?

我听说过:

https://www.swoole.co.uk

https://github.com/swoole/swoole-src

https://reactphp.org

https://github.com/reactphp/socket

还有其他框架吗?

但是我不知道这是否是一个很好且稳定的替代方案?

谢谢!

2 个答案:

答案 0 :(得分:1)

我知道有一个名为Ratchet的图书馆。但是根据我的经验,它不能很好地工作。如果您尝试建立套接字连接,则应该始终只是很好地支持套接字连接的技术,例如NodeJ

可以使用curl请求从您的PHP调用NodeJS服务器(快速),并使NodeJS服务器进行套接字连接。

答案 1 :(得分:0)

尝试phpsocket.io 1,它是socket.io的直接PHP实现,甚至具有出色的示例聊天应用程序。它坚如磐石,维护良好。就个人而言,除了尝试其他方法外,我什么都没有。

您的示例代码在PHP中将如下所示:

$io->on('connection', function($socket){
  $socket->on('chat message', function($msg){
    $io->emit('chat message', $msg);
  });
});