Socket.emit 不适用于 Ionic
Socket.emit doesn't work with Ionic
我正在尝试在我的离子应用程序和我构建的套接字服务器之间创建套接字连接。
当 运行 应用程序在 iOS 模拟器中使用 ionic run ios --target="iPhone-6-Plus"
时套接字连接将无法工作
在浏览器中使用 ionic serve
.
为应用程序提供服务时套接字连接有效
我的代码
我的应用程序客户端中有一个连接到我的套接字服务器的套接字服务:
.factory('Sockets', function($http, socketFactory){
var myIoSocket = io.connect('localhost:5000');
var mySocket = socketFactory({
ioSocket: myIoSocket
});
return mySocket;
})
这是我的客户端套接字请求的样子:
angular.module('crewapp.chat', [])
.controller('ChatController', function($scope, Auth, Sockets, $localStorage){
$scope.test = 'Chats';
Sockets.emit('join room', $localStorage.groupname)
});
这是我的套接字服务器(简而言之)的样子
io.sockets.on('connection', function(socket) {
socket.on('join room', function(room) {
socket.room = room;
socket.join(room);
console.log(room);
});
我试过的
- 我试过查看 Socket.emit 是否在应用程序中定义,它是:
- 我通过在
socket.on('connection')
回调的函数体中放置一个 console.log 概括了套接字服务器应该记录的位置。
我明白问题出在哪里了。在 ionic / cordova 中连接到套接字服务器时,您必须在服务器 url 前面加上 http://
。应用程序仍可在浏览器中运行的原因是浏览器会自动添加前缀。
.factory('Sockets', function($http, socketFactory){
var myIoSocket = io.connect('http://localhost:5000');
var mySocket = socketFactory({
ioSocket: myIoSocket
});
return mySocket;
})
我正在尝试在我的离子应用程序和我构建的套接字服务器之间创建套接字连接。
当 运行 应用程序在 iOS 模拟器中使用
ionic run ios --target="iPhone-6-Plus"
时套接字连接将无法工作
在浏览器中使用
ionic serve
. 为应用程序提供服务时套接字连接有效
我的代码
我的应用程序客户端中有一个连接到我的套接字服务器的套接字服务:
.factory('Sockets', function($http, socketFactory){
var myIoSocket = io.connect('localhost:5000');
var mySocket = socketFactory({
ioSocket: myIoSocket
});
return mySocket;
})
这是我的客户端套接字请求的样子:
angular.module('crewapp.chat', [])
.controller('ChatController', function($scope, Auth, Sockets, $localStorage){
$scope.test = 'Chats';
Sockets.emit('join room', $localStorage.groupname)
});
这是我的套接字服务器(简而言之)的样子
io.sockets.on('connection', function(socket) {
socket.on('join room', function(room) {
socket.room = room;
socket.join(room);
console.log(room);
});
我试过的
- 我试过查看 Socket.emit 是否在应用程序中定义,它是:
- 我通过在
socket.on('connection')
回调的函数体中放置一个 console.log 概括了套接字服务器应该记录的位置。
我明白问题出在哪里了。在 ionic / cordova 中连接到套接字服务器时,您必须在服务器 url 前面加上 http://
。应用程序仍可在浏览器中运行的原因是浏览器会自动添加前缀。
.factory('Sockets', function($http, socketFactory){
var myIoSocket = io.connect('http://localhost:5000');
var mySocket = socketFactory({
ioSocket: myIoSocket
});
return mySocket;
})