尝试使用带有socket.io聊天应用程序的php站点,但它下载了php代码

时间:2018-02-21 10:47:52

标签: php websocket server socket.io

我使用socket.io

上的walk through创建了一个聊天应用程序

我在应用程序中添加了更多内容,包括数据库信息,这意味着我必须将index.html更改为当前的session.php。

现在,当我尝试运行应用程序时,它只会下载包含该页面所有代码的文档,但它不会运行。

我已将所有代码更改为当前session.php。

如果我将文件名更改回当前session.html并更改相关代码,那么它可以正常工作....

我真的需要在页面上有数据库信息,这就是为什么它需要是当前session.php

有谁知道为什么这样做?有工作吗?

index.js的代码:

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


app.get('/currentsession', function(req, res){
  res.sendFile(__dirname + '/Staff/html/current session.php');
});

app.get('/question', function(req, res){
  res.sendFile(__dirname + '/Student/Question.php');
});

io.emit('some event', { for: 'everyone' });

io.on('connection', function(socket){
  socket.broadcast.emit('hi');
});

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

var nsp = io.of('/currentsession');
nsp.on('connection', function(socket){
  socket.join('/currentsession');
});

var nsp = io.of('/question');
nsp.on('connection', function(socket){
  socket.join('/question');
});

var nsp = io.of('/currentsession');
nsp.on('connection', function(socket){
  socket.on('disconnect', function(){
    console.log('user disconnected');
  });
});

var nsp = io.of('/currentsession');
nsp.on('connection', function(socket){
  socket.on('go-to-page', function(data){
io.of('/question').emit('go-to-page', { href: "//selene.hud.ac.uk/u1555602"});
  });
});

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

当前session.php的代码

<?php include('server.php') ?> 
<?php 


    if (!isset($_SESSION['username'])) {
        $_SESSION['msg'] = "You must log in first";
        header('location: sign in.php');
    }

?>
<!DOCTYPE html>
<html>

<head>

    <title>Wireless Response System</title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="../css/style.css" rel="stylesheet" type="text/css">

    </head>


<div class="heading">
<div class="php">
<?php 
if (isset($_SESSION['username'])) :
$query = ("SELECT discipline FROM user WHERE username = '".$_SESSION['username']."'");
$resultset = $conn->query($query);
while ($user = $resultset->fetch()) {
echo '<h1> Discipline:'; echo $user["discipline"]; '</h1>'; }
endif
?>
</div>
<nav> 
<ul>

    <form action="">
      <button>Send</button>
    </form>
    <script src="/socket.io/socket.io.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script>
  $(function () {
  var socket = io('/currentsession');
    $('form').submit(function(){
      socket.emit('go-to-page', $('#m').val());
      $('#m').val('');
      return false;
    });
  socket.on('go-to-page', function (data) {
    window.location.replace(data.href);
  });
        });
</script>

1 个答案:

答案 0 :(得分:0)

@media screen and (max-aspect-ratio: 13/9)

您已使用Node.js编写了HTTP服务器。

对于某些HTTP请求,您的服务器将通过读取PHP文件的源代码然后将其发送到浏览器来响应。

您需要运行PHP程序并发送其输出,而不是源代码。

通常,您可以通过使用针对运行PHP优化的服务器(例如Apache HTTPD)并让浏览器向该服务器发出请求而不是使用Node.js创建的服务器来执行此操作。