gpt4 book ai didi

node.js - 使用 node.js 和 socket.io 的聊天应用程序

转载 作者:太空宇宙 更新时间:2023-11-03 22:38:12 25 4
gpt4 key购买 nike

我正在尝试使用node.js和socket.io创建一个聊天应用程序

这是我的带有地址脚本的 app.js

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

server.listen(3000);

app.get('/', function(req, res){
res.sendfile(__dirname + '/game.php');
});

io.sockets.on('connection', function(socket){
socket.on('send message', function(data){
io.sockets.emit('new message', data);
});
});

使用 .html 一切正常

但是当我将其更改为 .php 而不是加载页面时,它开始下载

在“本地主机:3000”

我应该更改什么才能使其正常工作?

如果您需要 game.php 代码,请让我发布它。

更新:编辑了这部分

app.get('/', function(req, res) {
res.setHeader('Content-Type', 'text/html');
res.sendfile(__dirname + '/game.php');
});

现在它给了我

ReferenceError: text is not defined
at C:\Users\Mojtaba\Desktop\chat\app.js:9:33
at callbacks (C:\Users\Mojtaba\Desktop\chat\node_modules\express\lib\router\index.js:161:37)
at param (C:\Users\Mojtaba\Desktop\chat\node_modules\express\lib\router\index.js:135:11)
at pass (C:\Users\Mojtaba\Desktop\chat\node_modules\express\lib\router\index.js:142:5)
at Router._dispatch (C:\Users\Mojtaba\Desktop\chat\node_modules\express\lib\router\index.js:170:5)
at Object.router (C:\Users\Mojtaba\Desktop\chat\node_modules\express\lib\router\index.js:33:10)
at next (C:\Users\Mojtaba\Desktop\chat\node_modules\express\node_modules\connect\lib\proto.js:190:15)
at Object.expressInit [as handle] (C:\Users\Mojtaba\Desktop\chat\node_modules\express\lib\middleware.js:31:5)
at next (C:\Users\Mojtaba\Desktop\chat\node_modules\express\node_modules\connect\lib\proto.js:190:15)
at Object.query [as handle] (C:\Users\Mojtaba\Desktop\chat\node_modules\express\node_modules\connect\lib\middleware\query.js:44:5

最佳答案

决定浏览器是否将文件显示为下载的附件或者是否应直接打开该文件的是 Content-Disposition HTTP header 。

尝试在发送文件之前添加此内容:

res.setHeader('Content-Disposition', '内联');

现在浏览器不应再将该文件视为附件。可能发生的情况是,express 正在查看文件的扩展名,并且由于它无法识别 PHP 扩展名,因此它将文件作为附件发送回。

但是打开的文件不应在浏览器中按您想要的方式显示,因为浏览器无法解释 PHP。 PHP 文件旨在在后端进行解释,而不是发送到浏览器。

您可以使用 PHP 作为 Express 中的 View 引擎,例如 php-node ,购买我不认为这是一个非常频繁的组合。

express 的默认 View 引擎是 jade , mustache也经常被提及以及 handlebars

如果您更喜欢在客户端而不是服务器端使用模板引擎,请检查 angular.js

在继续之前,重要的是要了解将 PHP 文件发送到浏览器并不能解决正在解决的问题,请阅读一些 article或者首先介绍服务器端和客户端模板之间的差异。

关于node.js - 使用 node.js 和 socket.io 的聊天应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20457501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com