我使用node.js作为服务器,我的ip是example.com:4000。所以我在服务器端的socket端点应该是example.com:4000。即使我尝试从localhost向example.com:4000发出一些东西,我也设法让它工作。
但是当我有一个应用程序(我使用离子与真实设备)但套接字似乎没有发送出socket.io的发射。我想知道为什么,我试图调试这个问题已经有2天了。
我在服务器端的代码
var server = require("http").Server(express);
var io = require("socket.io")(server);
server.listen(400);
io.on('connection', function(client) {
client.on('msg', function(data) {
console.log(data)
});
});
客户端
//angular service
.factory('socket',function(socketFactory){
var myIoSocket = io.connect('http://example.com:4000');
mySocket = socketFactory({
ioSocket: myIoSocket
});
return mySocket;
});
//within my controller
socket.emit('msg',data);
总结一下,在我尝试使用应用程序的时候,本地主机的功能却有效吗?
答案 0 :(得分:0)
尝试运行此代码,因为我知道该示例正在运行:
厂
<dependency>
<groupId>com.github.stefanbirkner</groupId>
<artifactId>system-rules</artifactId>
<version>1.16.0</version>
<scope>test</scope>
</dependency>
控制器
MyApp.factory('socket', function ($rootScope) {
var socket = io.connect('http://localhost:9000');
return {
on: function (eventName, callback) {
socket.on(eventName, function () {
var args = arguments;
$rootScope.$apply(function () {
callback.apply(socket, args);
});
});
},
emit: function (eventName, data, callback) {
socket.emit(eventName, data, function () {
var args = arguments;
$rootScope.$apply(function () {
if (callback) {
callback.apply(socket, args);
}
});
})
}
};
});
服务器端
MyApp.controller('MainCtrl', function($scope, socket){
$scope.users = [];
socket.emit('connection'); });
...