[英]socket.io.js not found in express
我的socket.io文件夹结构如下:
- node_modules / socket.io /
我的socket.io.js
文件夹结构如下:
/node_modules/socket.io-client/dist/socket.io.js
var express = require('express');
var http= require('http').Server(express);
var io= require('socket.io') (http);
var app = express();
io.on('connection', function(socket){
socket.on('chat', function(msg){
io.emit('chat',msg);
});
});
io.on('disconnect', function() {
console.log('user is disconnected');
});
并且视图如下:
<script src="/node_modules/socket.io-client/dist/socket.io.js"></script>
<script src="/js/jquery-2.1.4.min.js"></script>
<script>
$(function(){
var socket= io();
$('form').submit(function(e){
e.preventDefault();
socket.emit('chat', $('#input').val());
$('#input').val('');
return false;
});
socket.on('chat', function(msg){
$('#sent').append(msg);
});
});
</script>
错误是:
Failed to load resource: the server responded with a status of 404 (Not Found)
Uncaught ReferenceError: io is not defined
在不创建服务器的情况下,您正在创建套接字实例,您可以将应用程序传递到socket.js或可以将套接字导出到其他模块并相应地使用...。
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
首先,默认情况下,node.js服务器不管理任何文件。 对于要由服务器提供服务的文件,必须有一个路由处理程序,该处理程序具有发送该特定文件的代码。 所以,这解释了为什么这不起作用:
<script src="/node_modules/socket.io-client/dist/socket.io.js"></script>
因为您的服务器中没有路径"/node_modules/socket.io-client/dist/socket.io.js"
路由处理程序。
但是,socket.io为您解决了这个问题。 socket.io服务器自动安装以下路由:
/socket.io/socket.io.js
当它看到上述请求时,它将到达该node_modules / socket.io / client目录并发送socket.io.js文件。
因此,将您的脚本标签更改为:
<script src="/socket.io/socket.io.js"></script>
并且,socket.io服务器将自动从dist目录发送socket.io.js文件。
看来您的服务器初始化也不正确,因为您没有将express
传递给http服务器,而是传递了app
。 更改此:
var express = require('express');
var http= require('http').Server(express);
var io= require('socket.io') (http);
var app = express();
io.on('connection', function(socket){
socket.on('chat', function(msg){
io.emit('chat',msg);
});
});
io.on('disconnect', function() {
console.log('user is disconnected');
});
对此:
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
server.listen(80);
io.on('connection', function(socket){
socket.on('chat', function(msg){
io.emit('chat',msg);
});
});
io.on('disconnect', function() {
console.log('user is disconnected');
});
或者,更简单的版本:
var express = require('express');
var app = express();
var server = app.listen(80);
var io = require('socket.io')(server);
io.on('connection', function(socket){
socket.on('chat', function(msg){
io.emit('chat',msg);
});
});
io.on('disconnect', function() {
console.log('user is disconnected');
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.