1
에서 Socket.IO에 :NodeJS 내가 app.js 코드가 라우터 페이지
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
io.on('connection', function(socket){
socket.on('newRideAdded', function(exclude){
io.emit('newRideAdded', exclude);
});
console.log('a user connected');
socket.on('disconnect', function(){
console.log('user disconnected');
});
});
var bodyParser = require('body-parser');
app.use(bodyParser.json()); // support json encoded bodies
app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies
app.use(express.static(__dirname + '/public/'));
app.use('/rides', require('./routes/rides'));
app.use('/user', require('./routes/user'));
server.listen("8080", function() {
console.log("Connected to db and listening on port 8080");
});
을 그리고는 라우터의 페이지 코드 IO 소켓을 이동하려는. 라우터 페이지입니다
:
var express = require('express');
var router = express.Router();
var mongojs = require('mongojs');
var db = mongojs("ride4you", []);
router.post('/getRides', function(req, res, next) {
db.rides.find(function(err, docs) {
res.json(docs);
});
});
// rest of the restapi in this page.
// I want socket code to be here
module.exports = router;
당신은 내가 각 소켓은 각 라우터의 페이지에 방출하고 난 이미 라우터 페이지에서 module.exports이 볼 수 있듯이.
어떻게 할 수 있습니까?
감사합니다. 당신의 app.js 익스프레스 4 사용
이것은 조금 관련이 없지만 계속 route 등으로 계속 전달하는 것을 피하는 명시 적 응용 프로그램 주위에 socket.io 연결 객체를 전달하는 것이 가장 쉬운 방법입니다. – Freddie
클라이언트에서 방출하는 대신 알려주세요 노드 서버에서 수신 한 다음 다시 클라이언트 측에서 수신 한 다음 이것을 단순화 한 다음 이제는 두 가지 방법 대신 단지 한 가지 방법입니다. nodejs 서버에서 내 보낸 다음 클라이언트 측에서 수신합니다. 권리? 글쎄, 나는 이것을 테스트하고 굉장합니다. 그러나 한 가지, 연결 기능에 작동하지 않습니다 io.on ('연결'기능 (소켓) {('newRideAdded' socket.on, 기능 (제외) { 어쩌면 당신은 이유를 알고 ? – Raz
시도해 보니 매우 좋았습니다. 감사합니다. – Raz