私はMEANアプリケーションとSocket.ioを使用しています。私が最初のページ(チェスゲーム)を開発していたので、うまくいきました。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/で見つかったものを試しましたが、これは.ofですが、うまく機能しません。私が実行したとき、私はノードからのエラーのいずれかの種類を得ることはありません(パス付き)
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ではない。
誰かがangle/node/socket.ioでパスを設定する正しい方法を教えたり、どこに間違っているのかを教えてもらえれば、それは非常に感謝しています。
はい。 io.onで正常に動作します。 app.all( '/ chess'、function ..)を追加することで、404エラーは発生しませんでしたが、今度は次のようになります: "要求されたリソースにAccess Control-Allow-Originヘッダーがありません。 http://127.0.0.1:3000 'はアクセスが許可されていません。 – Steve
io.on(ログに接続が確立されていることを示しています)を使用しているときは「動作しています」 - クライアントがhttp://127.0.0.1:3000/socket.io/を要求しているのがわかりますhttp:// localhost:3000/chess – Steve