【问题标题】:Socket.IO Angular Server to Server ConnectionSocket.IO Angular 服务器到服务器连接
【发布时间】:2015-06-02 14:39:36
【问题描述】:

是否可以在 gulp 中运行的客户端服务器上与节点中运行的其他服务器建立简单的 socket.io 连接?

    .--------.      .----------.      .----------.
    |SERVER A|      |          |      | SERVER B |
    | (Gulp) |      |  CLIENT  |      | (Nodejs) |
    |  PORT  | <--> |   SIDE   | <--> |   PORT   |
    |  2772  |      |          |      |   8000   |
    '--------'      '----------'      '----------'

我尝试使用socket.io-client 但我有点困惑.. 但我是这样使用它的:

服务器.js

    var http = require('http').Server(app);
    var io = require('socket.io')(http);
    var port = process.env.PORT || 8000;
    var ioClient = require('socket.io-client');
    var client = ioClient.connect( "http://localhost:" + 2772 );

    io.on('connection', function(socket){
      console.log('a user connected')
      socket.on('disconnect', function(){
        console.log("a user disconnected")
      });
    });

     client.on('connection', function(socket){
       console.log('a user connected')
       client.on('disconnect', function(){
         console.log("a user disconnected")
       });
     });

在我的 Angular..

App.js

    var myApp = angular.module('ngclient', ['ngRoute','ui.bootstrap','ui.select','ngSanitize', 'btford.socket-io']);

控制器

    myApp.controller('dailydoseController', ['$scope', 'chatSocket', function($scope, chatSocket){


    }]);

工厂

myApp.factory('chatSocket', ['socketFactory', function(socketFactory){


   return socketFactory;
}]);

只是相关的...整个代码太长了..请帮助

【问题讨论】:

  • 我很困惑......你为什么称“Angular”服务器A? Angular 都是客户端。看起来您需要一个简单的客户端->服务器套接字连接。
  • 对不起,是 gulp 服务器
  • 对,但是 gulp 没有建立套接字连接,客户端是。 gulp 只是提供静态的 html/js/css/images。所以,你想建立从 CLIENT 到 SERVER B 的连接
  • 你可以给我们一个直接链接到 socketFactory 的来源,以及你是如何使用它的。您是否在客户端 html 页面上包含了从套接字服务器提供的 socket-io.js?您似乎完全错过了教程的一部分。
  • video 这是视频..

标签: javascript angularjs node.js sockets server


【解决方案1】:

我不确定我是否完全理解了你的问题。

在客户端(在您的情况下为 Angular),您可以使用 socket.io 的客户端实现(或使用 Angular 组件实现 socket-io 客户端 https://github.com/btford/angular-socket-io)。

在你的节点服务器中,你应该像下面这样使用socket-io的服务器组件。

var app = require('http').createServer(handler)
var io = require('socket.io')(app);
io.on('connection', function (socket) {
  // handle connection
})

考虑到即使是强大的 websocket 也是双向的,我们仍然有一个“客户端”和“服务器”。在您的情况下,“客户端”是在浏览器上运行的 Angular,“服务器”是节点。 节点服务器无法直接用客户端打开 websocket,因为浏览器上的 WebSockets API 没有提供监听连接的方法。

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2012-12-29
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多