我正在try 集成套接字.io和Angular,我很难从客户端连接到服务器.我已经浏览过其他相关的问题,但是我的问题在本地发生,所以中间没有Web服务器.
这就是我的服务器代码:
const app = express();
const server = http.createServer(app);
const io = require('socket.io').listen(server);
io.on('connection', function(socket) {
socket.emit('greet', { hello: 'Hey, Mr.Client!' });
socket.on('respond', function(data) {
console.log(data);
});
socket.on('disconnect', function() {
console.log('Socket disconnected');
});
});
我使用Grunt按以下顺序加载客户端JavaScript文件:
dist: {
src: [
public/bower_components/angular/angular.min.js,
...
public/bower_components/socket.io-client/dist/socket.io.min.js,
public/bower_components/angular-socket-io/socket.min.js,
...
]
}
然后在我的控制器中:
function MyController($scope) {
let socket = io.connect(window.location.href);
socket.connect('http://localhost:3000');
socket.on('greet', function(data) {
console.log(data);
socket.emit('respond', { message: 'Hello to you too, Mr.Server!' });
});
...
}
在实际使用btford/angular-socket-io
库之前,我想确保能够正确连接,但控制台中出现以下错误:
有趣的是,如果我重新启动 node .在js服务器进程中,它确实能够发送消息,但使用轮询而不是WebSocket.
我在插座上try 了各种不同的 Select .接通电话,但什么都没用.
任何帮助都将不胜感激.
更新(30/12/2016):
我刚刚意识到websockets部分起作用了.我在Chrome开发者控制台中看到101交换协议请求.然而,我看到的唯一画面是引擎.io协议包(乒乓、乒乓).然而,由于某些原因,我的应用程序套接字消息仍然返回到轮询...