首页 > 解决方案 > 尝试将 .php 页面连接到在与 PHP 页面不同的端口上运行的套接字服务器

问题描述

我正在一个运行 .php 文件的网站上工作。但是,因为我通过 'localhost' 和指定的 PHP 端口(例如http://localhost:3000/测试站点,我无法访问在另一个端口上创建的套接字。所以如果套接字在端口 8500 上运行,当我启动 .php 网页(使用括号和 MAMP),我无法找到连接到端口 8500 上的套接字的方法,因为我已经在http://localhost:3000/上。如何连接到套接字但保持打开状态我当前所在的 .php 页面?

main_game.php JavaScript:

<script src="main_game.js"></script>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
    $(function() {
        var socket = io();
        $('form').submit(function(e) {
            e.preventDefault();
            socket.emit('chat message', $('#m').val());
            $('#m').val('');
            return false;
        });
        socket.on('chat message', function(msg){
            //$('#messages').append($('<li>').text(msg)); For later
        });
    });
</script>

页面顶部有 PHP 来保存会话数据,因此我无法将文件类型更改为 .html。套接字正在侦听端口 8501,但 .php 正在 localhost:8500 上运行

NodeJS 脚本:

var app = require('express')();
var http = require('http').createServer(app);
var io = require('socket.io')(http);

app.get('/', (req, res) => {
  res.sendFile('/Users/path.../main_game.php');
});

http.listen(8501, () => {
  console.log('listening on *:8501');
});

io.on('connection', (socket) => {
  console.log('a user connected');
  socket.on('disconnect', () => {
    console.log('user disconnected');
  });
  socket.on('chat message', (msg) => {
    io.emit('chat message', msg);
  });
});

标签: javascriptphpwebsocket

解决方案


推荐阅读