【问题标题】:Socket.io doesn't emit from an app? (ionic)Socket.io 不会从应用程序发出? (离子)
【发布时间】:2016-11-09 22:03:54
【问题描述】:

我使用 node.js 作为服务器,我的 ip 是 example.com:4000。所以我在服务器端的socket端点应该是example.com:4000。即使我尝试从 localhost 向 example.com:4000 发出一些东西,我也设法让它工作。

但是当我有一个应用程序(我在真实设备上使用 ionic)但套接字似乎没有将它发送到 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);

总而言之,在 localhost 上运行正常,但在我尝试应用程序时却不行?

【问题讨论】:

  • 请发布更多详细信息,包括您的代码,以便人们能够帮助您。欢迎使用 StackOverflow!
  • @betseyb 完成,添加了我的代码。
  • 错误是什么?
  • @TiagoFabre 没有错误,只是我的服务器无法接收来自我的应用(移动应用)的发射

标签: node.js ionic-framework websocket socket.io


【解决方案1】:

尝试运行此代码,因为我知道该示例正在运行:

工厂

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'); });
...

服务器端

"use strict";
var express = require('express');
var app     = express();
var server  = require('http').Server(app);
var io = require('socket.io')(server);
io.on('connection', function(socket) {
  console.log('connected!');
  socket.on('disconnect', function() {
    console.log('user disconnected');
  });
});
server.listen(9000, function() {
  console.log('server up and running at 9000 port');
});

【讨论】:

  • 你在这里想说什么?甚至我的代码都很好。
猜你喜欢
  • 2015-12-31
  • 2016-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-31
  • 2018-01-29
  • 1970-01-01
相关资源
最近更新 更多