Есть мобильная приложуля построенная на onsen.ui и angular.js.
Нужно добавить подключение к socket.io серверу, но при подключении консоль выдает 400 bad request, а сервак отвечает {"code":0,"message":"Transport unknown"}.
Я пробовал использовать
https://github.com/btford/angular-socket-io, но результат такой же.
С чистым явасприптом проблем нет. Он как положено подключается и все отрабатывает, а вот c angular...
На сервере: LAMP & node.js (express@3.4.8, mysql@2.6.2, socket.io@1.3.5).
Серверный app.js
var express = require('express')(),
http = require('http'),
app = express,
server = http.createServer(app),
io = require('socket.io')(server),
io = io.listen(server),
mysql = require('mysql'),
db = mysql.createConnection({
host : '',
user : '',
password: '',
database: '',
}),
userList = []; //Online Users
io.sockets.on('connection', function(socket){
blablabla
});
server.listen(3000, function(){
console.log('Server started on *:3000') //Launch server in 3000 port
});
Клиентский app.js
var app = angular.module('app', ['onsen', 'angular-images-loaded','ngSanitize', 'filters']);
app.factory('socket',function ($rootScope){
var socket = io.connect('http://server:3000');
return {
on: function (eventName,callback){
socket.on(eventName,function(){
var args = [].slice.call(arguments);
$rootScope.$apply(function(){
if(callback){
callback.apply(socket,args);
}
});
});
},
emit: function (eventName, data, callback){
var args = [].slice.call(arguments), cb;
if( typeof args[args.length-1] == "function" ){
cb = args[args.length-1];
args[args.length-1] = function(){
var args = [].slice.call(arguments);
$rootScope.$apply(function(){
if(cb){
cb.apply(socket,args);
}
});
};
}
socket.emit.apply(socket, args);
}
};
});
app.controller('appController', [ '$http', '$scope', '$sce', '$rootScope', function($http, $scope, $sce, $rootScope, socket){
//conroller code
}]);
Заранее огромное спасибо за ответы.
P.S. Пытался задать вопрос на stackoverflow, но вечно ругается на 4 пробела при оформлении кода. Помучился с ним и плюнул так и не поняв как он работает.