【发布时间】:2015-11-25 01:19:01
【问题描述】:
Io 和 Angular。刷新页面时,不会触发 socket.io 中的断开连接事件。我在网上做了一些研究,这导致我实施了以下内容
io.set('transports', ['xhr-polling']);
但是,当它被设置时,我得到以下错误;
GET http://app.local:3000/socket.io/?EIO=3&transport=polling&t=1448414100223-67 400(错误请求)
我有以下代码;
server.js
var express = require('express'),
http = require('http'),
server = http.createServer(app),
path = require('path'),
cookieParser = require('cookie-parser'),
bodyParser = require('body-parser');
var app = express();
const redis = require('redis');
const io = require('socket.io').listen(server);
const client = redis.createClient();
server.listen(3000, '0.0.0.0');
io.listen(server).on('connection', function(client) {
const redisClient = redis.createClient();
redisClient.subscribe('user.joined');
redisClient.on("message", function(channel, message) {
client.emit(channel, message);
});
client.on('disconnect', function() {
redisClient.quit();
});
});
io.set('transports', ['xhr-polling']);
角度代码;
var serverBaseUrl = 'http://app.local:3000';
myApp.factory('socket', function (socketFactory) {
var myIoSocket = io.connect(serverBaseUrl, {'sync disconnect on unload' : true});
var socket = socketFactory({
ioSocket: myIoSocket
});
return socket;
});
任何想法我做错了什么?
【问题讨论】:
标签: angularjs sockets socket.io