이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 19123|회답: 1

[ASP.NET] mvc 4.0 SignalR 사용 방법 (2)

[링크 복사]
게시됨 2017. 7. 5. 오전 11:15:08 | | | |
먼저, 프로젝트 아래에 새로운 Hubs 폴더를 만들었습니다

또한, 아래 그림과 같이 폴더 아래에 새 PositionVehicle 파일을 생성하세요:



프로젝트를 다시 빌드한 후, 뷰 페이지에서 다음 두 개의 js 파일을 참조합니다



메모!!!

"/Scripts/jquery.signalR-2.2.2.min.js" 파일은 SignalR 설치 시 추가되며 물리적 디스크에 존재합니다

"/signalr/hubs"는SignalR은 자동으로 생성됩니다, 이 디스크는 물리적 디스크에서 찾을 수 없습니다!

SignalR이 생성한 js 파일을 살펴보겠습니다.

/*!
* ASP.NET SignalR 자바스크립트 라이브러리 v2.2.2
* http://signalr.net/
*
* 저작권 (c) .NET 재단. 판권 소유.
* Apache 라이선스 버전 2.0에 따라 제공됩니다. 라이선스 정보는 프로젝트 루트의 License.txt을 참조하세요.
*
*/

<참조 경로="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" />
<참조 경로="jquery.signalR.js" />
(함수 ($, window, undeed) {
    <param name="$" type="jQuery" />
    "strict를 사용한다";

    if (typeof ($.signalR) !== "function") {
        새로운 Error("SignalR: SignalR가 로드되지 않았습니다. ~/signalr/js.") 앞에 jquery.signalR-x.js 참조가 반드시 포함되도록 해 주세요");
    }

    var signalR = $.signalR;

    function makeProxyCallback(hub, callback) {
        반환 함수 () {
            클라이언트 허브 메서드를 호출하세요
            callback.apply(hub, $.makeArray(arguments));
        };
    }

    function registerHubProxies(instance, shouldSubscribe) {
        var key, hub, memberKey, memberValue, subscriptionMethod;

        (예를 들어 키) {
            if (instance.hasOwnProperty(key)) {
                허브 = 인스턴스[key];

                만약 (!( hub.hubName)) {
                    클라이언트 허브가 아닙니다
                    계속하세요;
                }

                만약 (구독해야 한다면) {
                    허브 이벤트에 구독하고 싶습니다
                    subscriptionMethod = hub.on;
                } 그렇지 않으면 {
                    허브 이벤트에서 구독을 취소하고 싶습니다
                    subscriptionMethod = hub.off;
                }

                허브의 모든 멤버를 루프해서 클라이언트 허브 기능을 찾아 구독/해제 기능을 하세요
                for (memberKey in hub.client) {
                    if (hub.client.hasOwnProperty(memberKey)) {
                        memberValue = hub.client[memberKey];

                        만약 (!$.isFunction(memberValue)) {
                            클라이언트 허브 기능이 아닙니다
                            계속하세요;
                        }

                        subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue));
                    }
                }
            }
        }
    }

    $.hubConnection.prototype.createHubProxies = function () {
        var proxies = {};
        this.starting(function () {
            허브 프록시를 구독 상태로 등록하세요
            (인스턴스, 구독 필요)
            registerHubProxies(proxy, true);

            this._registerSubscribedHubs();
        }).disconnected(function () {
            "연결이 끊기" 때 모든 허브 프록시를 구독 해제하세요.  이는 기능 콜백이 다시 추가되지 않도록 하기 위함입니다.
            (인스턴스, 구독 필요)
            registerHubProxies(프록시, false);
        });

        프록시['positionVehicle'] = this.createHubProxy('positionVehicle');
        proxies['positionVehicle'].client = { };
        proxies['positionVehicle'].server = {
            안녕하세요: 함수 (이름) {
                return proxies['positionVehicle'].invoke.apply(proxies['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments))));
             }
        };

        대리 반환;
    };

    signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false });
    $.extend(signalR, signalR.hub.createHubProxies());

}(window.jQuery, window));


그럼 테스트해보자. 코드는 다음과 같다:



검사 결과는 다음과 같습니다:


처음 받은 두 메시지는 저희가 직접 보낸 것이었고, 저희도 받았으며, 세 번째 메시지는 제가 다른 브라우저를 열어 보낸 것이었고, 저희도 받았습니다.

메시지를 받았을 때는 웹소켓이 아니라 HTTP 폴링이었는데, 우리 js가 오류를 보고했기 때문입니다

js 오류가 왜 보고되었는지에 대해서는 다음에 자세히 다루겠습니다.









이전의:asp.net mvc4.0 SignalR 설치 (1)
다음:오류 코드: 1175. 안전 업데이트 모드를 사용 중인데 업데이트 시도를 하셨는데...
 집주인| 게시됨 2017. 7. 5. 오후 2:53:15 |
. .NET은 SignalR을 사용하여 나타납니다WebSocket 핸드셰이크 중 오류
개발 과정에서 다음과 같은 오류를 겪었습니다: WebSocket 'ws://*****' 연결 실패: WebSocket 핸드셰이크 중 오류: net::ERR_CONNECTION_RESET.

websocket을 사용할 수 없는 이유는 web.config 파일이 설정되어 있지 않기 때문입니다. SignalR이 올바르게 실행되려면 system.web 노드 아래에 다음 구성 항목을 추가해야 합니다:



targetFramework 4.5로 설정됨
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com