Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将socket io与express和ejs一起使用_Javascript_Node.js_Sockets_Ejs - Fatal编程技术网

Javascript 将socket io与express和ejs一起使用

Javascript 将socket io与express和ejs一起使用,javascript,node.js,sockets,ejs,Javascript,Node.js,Sockets,Ejs,嘿,我今天刚开始学习node js,我在ejs中使用express并尝试添加socket io服务器/聊天室,但我似乎不明白为什么我不能让它工作 页面加载但未连接到套接字服务器 server.js: const express = require('express'); const expressLayouts = require('express-ejs-layouts'); const app = express(); // EJS app.use(expressLayouts); app

嘿,我今天刚开始学习node js,我在ejs中使用express并尝试添加socket io服务器/聊天室,但我似乎不明白为什么我不能让它工作

页面加载但未连接到套接字服务器

server.js:

const express = require('express');
const expressLayouts = require('express-ejs-layouts');
const app = express();

// EJS
app.use(expressLayouts);
app.use(express.static("public"));
app.set('view engine', 'ejs');

// Routes
app.use('/', require('./routes/index.js'));
app.use('/chat', require('./routes/chat.js'));
app.use((req, res, next) => res.redirect('/'));

const listener = app.listen(process.env.PORT, () => {
  console.log('Your app is listening on port ' + listener.address().port)
});
路由器/chat.js

const express = require('express');
const router = express.Router();
const server = require('http').createServer();
const io = require('socket.io')(server);

// Chat Page
router.get('/chat', (req, res) => {
  res.render("chat/chat");
});

io.on('connection', function(socket) {
  console.log('a user connected');
  socket.on('chat message', function(msg) {
    console.log('message: ' + msg);
  });
});

module.exports = router;
视图/chat/chat.ejs:

<form action="">
  <input id="m" autocomplete="off" /><button>Send</button>
</form>

<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();
    
    $('form').submit(function(){
      socket.emit('chat message', $('#m').val());
      $('#m').val('');
      return false;
    });
  });
</script>

发送
$(函数(){
var socket=io();
$('form')。提交(函数(){
emit('chat message',$('#m').val());
$('m').val('');
返回false;
});
});
错误:
未捕获引用错误:未定义io

您不能使用source/socket lib/socket.io.js

你必须找到来源

基本上,您需要提供服务器地址的完整源代码

服务器会自动为您完成其余的工作

资料来源:


还有。您可以在斜杠前使用
尝试
/socket lib/socket.io.js
,您在控制台或节点控制台中是否有任何错误?是的,我在控制台未捕获引用中收到错误错误错误:未定义io您是否已将socket.io安装到节点模块中
npm install socket.io
是的,我已经安装了socket.iod,您收到客户端或服务器端的错误信息了吗?