gpt4 book ai didi

javascript - Express js 聊天应用程序 :404 error on socket. io.js 文件

转载 作者:行者123 更新时间:2023-11-28 19:10:58 24 4
gpt4 key购买 nike

我正在尝试使用 Express js(jade template )和 socket.io 开发一个聊天应用程序。这是我的 app.js

var express = require('express');
var path = require('path');
var http = require('http');
var io = require('socket.io')(http);
var app = express();
//start chat with socket io
io.sockets.on('connection',function(socket){
console.log("connection");
socket.on('send message',function(data,callback){
var msg=data.trim();
if(msg==null){
callback("enter a messsage");
}else{
console.log("chat message"+msg);
io.sockets.emit('new message',{msg:msg});
}
});
});
//end socket

这是我在客户端的 chat.js 文件

$(document).ready(function(){
var socket=io.connect('http://localhost:3000');
var $message=$('#message');
var $messageForm=$('#send-message');
//opens a connection and send to sever
$messageForm.submit(function(e){
e.preventDefault();
socket.emit('send message',$message.val(),function(data){
console.log("data"+data);
});
$message.val('');
});
//read the chat messages from users
socket.on('new message',function(data){
console.log('data.msg');
});
});

chat.jade 文件

<form id="send-message">
<input type="text" id="message">
<input type="submit" value="submit"/>
</form>
<script src="http://localhost/api/jquery.min.js"></script>
<script src="http://localhost:3000/socket.io/socket.io.js"></script>

我将在此文件上收到 404 错误 http://localhost:3000/socket.io/socket.io.js。还在chat.js脚本中得到一个Uncaught ReferenceError: io is not Define。我认为这是因为缺少socket.io.js文件。

最佳答案

您有几个问题。
在你的 jade 模板中提供静态文件,你应该使用这样的东西:

link(rel='text/javascript', href='/js/socket.io.js')    

这些文件通常包含在 Express 应用程序的 public 目录中。然后在你的 app.js 中你应该有类似的内容:

app.use(express.static('public'));  

在 express 网站上对此进行了解释 - http://expressjs.com/starter/static-files.html

其他地方

Uncaught ReferenceError: io is not defined  

$(document).ready(function(){
var socket=io.connect('http://localhost:3000');

这是因为您尚未在客户端上定义io。您在名为 io 的对象上调用 connect,但尚未在任何地方声明/定义 io

还有您尚未在应用程序端创建套接字服务器。您应该按照以下方式做一些事情:

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

server.listen(port, function () {
console.log('Server listening at port %d', port);
});
io.on('connection', function (socket) {
// when the client emits 'new message', this listens and executes
socket.on('new message', function (data) {
// we tell the client to execute 'new message'
socket.broadcast.emit('new message', {
});
});

示例
Socket.io 在 github 上有一个示例聊天应用程序,您应该将其用作引用。
您的 chat.js 将相当于他们的 public/main.js
您的 chat.jade 相当于他们的 public/index.html
并且您的 app.js 与它们的 index.js 匹配

关于javascript - Express js 聊天应用程序 :404 error on socket. io.js 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30726850/

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