【问题标题】:AngularJS and WebsocketAngularJS 和 Websocket
【发布时间】:2018-01-30 05:10:44
【问题描述】:

我正在尝试创建一个简单的回声测试应用程序,其中我有连接和断开按钮。每当我点击连接时,我都想创建一个 websocket 对象。我在服务中这样做。但不知何故,在创建对象后 onopen 并没有被解雇。我是新来的。有人能帮我吗?谢谢。 这是我的代码

HTML 代码

<button class="echo-test-button" id ="connect" ng-click ="connect()">
        Connect
    </button>
    <button class="echo-test-button" id ="disconnect" ng-click ="disconnect()">
        Disconnect
    </button>

控制器

var app = angular.module("test");
app.controller('SocketCtrl',["$scope","$window","Socket","$rootScope",
    function ($scope, $window, socket, $rootScope) {

    $scope.connect = function () {

        socket.createConnection();
    }

    }]);

套接字服务

angular.module("test").factory("Socket",["$http","$q", function ($http, $q) {
    var ws = {};
    var socket = {
        url :  "ws://echo.websocket.org/",

    };
    socket.createConnection = function() {
        ws = new WebSocket(socket.url);
    };
    ws.onopen = function (event) {
        console.log("Established");
    }
    return socket;
}]);

【问题讨论】:

    标签: javascript angularjs websocket angularjs-service


    【解决方案1】:

    您的 onopen 处理程序未正确设置。在 createConnection 方法中移动 onopen 处理程序。

    angular.module("test").factory("Socket",["$http","$q", function ($http, $q) {
        var ws = {};
        var socket = {
            url :  "ws://echo.websocket.org/",
    
        };
        socket.createConnection = function() {
            ws = new WebSocket(socket.url);
            ws.onopen = function (event) {
                console.log("Established");
            }
        };
        return socket;
    }]);
    

    【讨论】:

    • 如何向客户端发送确认套接字已建立?有什么好办法吗?
    • @dhamchan 通过在同一个套接字上从服务器向客户端发送确认消息。也许从 on​​open 函数中仍然可以访问 ws 套接字。
    • @vijaykrishnavanshi,你能编辑你的代码并给我看吗?如何发送ack?我是新手。
    猜你喜欢
    • 2019-06-16
    • 2020-02-15
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多