我正在使用MEAN应用并使用Socket.io。当我开发第一页(国际象棋游戏)时,它一直很好。
server.js
var express = require('express');
var app = express();
var server = app.listen(3000);
var io = require('socket.io').listen(server);
var session = require('express-session');
app.use(session({ secret: 'chocolatecakepancakesicecream'}));
var html_dir = './html/';
app.use(express.static('public'));
app.get('/chessgame', function(req, res) {
res.sendfile(html_dir + 'chessgame.html');
});
io.on('connection', function (socket) {
// ...
}
// ...
chessapp.js
//Load angular
var app = angular.module('chess-game', ['btford.socket-io', 'ngMaterial', 'ngMessages', 'ngAnimate'])
.factory('mySocket', function (socketFactory) {
var myIoSocket = io.connect('http://localhost:3000');
mySocket = socketFactory({
ioSocket: myIoSocket
});
var mySocket = socketFactory();
mySocket.forward('select-match-type');
mySocket.forward('game-event');
return mySocket;
});
// ...
我想添加一个新页面来实时监控应用程序中的统计信息。我想使用不同的路径连接以保持逻辑分离。我已经尝试了http://socket.io/docs/在Wikipedia找到的即可使用的内容,但它无效。
server.js(带路径)
var express = require('express');
var app = express();
var server = app.listen(3000);
var io = require('socket.io').listen(server);
var session = require('express-session');
app.use(session({ secret: 'chocolatecakepancakesicecream'}));
var html_dir = './html/';
app.use(express.static('public'));
app.get('/chessgame', function(req, res) {
res.sendfile(html_dir + 'chessgame.html');
});
var chess = io.of('/chess');
var stats = io.of('/stats');
chess.on('connection', function (socket) {
// ...
}
stats.on('connection', function (socket) {
// ...
}
// ...
chessapp.js(带路径)
//Load angular
var app = angular.module('chess-game', ['btford.socket-io', 'ngMaterial', 'ngMessages', 'ngAnimate'])
.factory('mySocket', function (socketFactory) {
var myIoSocket = io.connect('http://localhost:3000', {path: '/chess'});
mySocket = socketFactory({
ioSocket: myIoSocket
});
var mySocket = socketFactory();
mySocket.forward('select-match-type');
mySocket.forward('game-event');
return mySocket;
});
运行此代码时,我没有从节点收到任何错误,但是没有建立任何连接。我相信客户端部分正在工作,因为我可以在控制台中看到对localhost:3000 / chess的请求,但结果是找不到404。
如果有人能告诉我使用angular / node / socket.io设置路径的正确方法,或者告诉我哪里出错了,那将非常感谢!
答案 0 :(得分:0)
基本上,我不认为.of函数也会为你创建路径。您的服务器只有' / chessgame'的路由。不是' / chess'。在您的server.js文件中,您必须添加一个' chess'路线:
app.get('/chess', function...
此外,如果您使用:
,它是否有效io.on('connection'...
而不是chess.on?