[英]socket.io express and angularJS errors
我正在尝试使用 ExpressJS 和 AngularJS 在我的网站上安装Socket.io
服务器.js
var express = require('express');
var app = express();
fs = require('fs');
// set our port
var port = 3000;
// set the static files location /public/img will be /img for users
app.use(express.static(__dirname + '/public'));
require('./config');
// routes ==================================================
require('./app/routes')(app); // configure our routes
// start app ===============================================
// startup our app at http://localhost:3000
app.listen(port);
// shoutout to the user
console.log('Magic happens on port ' + port);
// expose app
exports = module.exports = app;
路由.js
module.exports = function(app) {
var http = require('http').createServer(app);
var io = require('socket.io').listen(http);
io.sockets.on('connection', function(client) {
console.log('a user connected');
socket.emit('connection', "Connection created.")
});
};
套接字.js
angular.module('InterfaceApp.services').factory('socket', [function() {
var socket = io.connect("http://localhost:3000");
return {
on: function(eventName, callback) {
socket.on(eventName, callback);
},
emit: function(eventName, data) {
socket.emit(eventName, data);
}
};
}]);
启动我的服务器时,控制台只显示
魔法发生在 3000 端口
在我的浏览器控制台中,它每秒(或更少)轮询一次错误
POST http://localhost:3000/socket.io/?EIO=3&transport=polling&t=LcsMHH4 404(未找到)
我错过了什么? 为 socket.io 使用工厂是一种糟糕的方式吗?
我认为它不起作用,因为您没有在 routes.js 文件中正确实现套接字 IO
根据 socket.io 的官方网站,你应该尝试这样的事情。
var app = require('express').createServer();
var io = require('socket.io')(app);
app.listen(80);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
您在服务器代码中在哪里使用了 socket.io?
检查波纹管代码
var express = require('express');
var app = express();
var socketio = require('socket.io');
var fs = require('fs');
var http = require('http');
// set our port
var port = 3000;
// set the static files location /public/img will be /img for users
app.use(express.static(__dirname + '/public'));
require('./config');
var server = http.createServer(app);
// routes ==================================================
require('./app/routes')(app); // configure our routes
var io = socketio.listen(server);
// start app ===============================================
// startup our app at http://localhost:3000
app.listen(port);
io.sockets.on('connection', function (socket) {
// handle connections here
});
// shoutout to the user
console.log('Magic happens on port ' + port);
// expose app
exports = module.exports = app;
终于找到解决办法
服务器.js
var express = require('express');
var app = express();
var http = require('http').createServer(app);
var io = require('socket.io').listen(http);
fs = require('fs');
// set our port
var port = 3000;
app.set('port', 3000)
app.use(express.static(__dirname + '/public'));
require('./config');
// routes ==================================================
require('./app/routes')(app, io); // configure our routes
// startup our app at http://localhost:3000
http.listen(app.get('port'), function(){
console.log('Magic happens on port ' + app.get('port'));
});
// expose app
exports = module.exports = app;
路由.js
module.exports = function(app, io) {
io.on('connection', function(x){
console.log("YEAH");
})
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.