基於html5 WebSocket和WebRTC實現IM和視音頻呼叫(二)


在上篇文( 基於html5 WebSocket和WebRTC實現IM和視音頻呼叫(一))里我們已經用Jetty-7.5.4.v20111024搭起了一個WebSocket server,現在就可以編寫自己的WebSocket Server邏輯完成自己的實現了。

一、編寫WebSocket服務端邏輯

MyWebSocketServlet類繼承自Jetty開發包中的org.eclipse.jetty.websocket.WebSocketServlet類,用於實現我們的WebSocket 服務端入口。前期沒有編寫太多的服務端邏輯,只是實現了接受並記錄所有連接client端,並廣播所有client端消息的功能,代碼如下:

MyWebSocketServlet.java

 

TailorSocket 繼承自 WebSocket.OnTextMessage,每當一個client連接時就會調用doWebSocketConnect方法實例化一個client對象。

server端通過TailorSocket的_connection.sendMessage(data)方法向client發送文本消息;通過onMessage接收client發送的文本消息,並調用broadcastMessage方法向所有連接的client廣播消息。

 

二、編寫Client邏輯

WebSocket對象在不同的瀏覽器實現稍有區別,為了代碼適應更多的瀏覽器在調用WebSocket對象前需要判斷當前的瀏覽器,然后實現WebSocket的onopen,onmessage,onclose等方法,即可與WebSocket服務端建立連接,具體代碼如下:

var server = {
	connect : function() {
		var location = get_appropriate_ws_url() + "/servlet/a";
		if (BrowserDetect.browser == "Firefox") {
			this._ws = new MozWebSocket(location, null);
		} else {
			this._ws = new WebSocket(location, null);
		}
		this._ws.onopen = this._onopen;
		this._ws.onmessage = this._onmessage;
		this._ws.onclose = this._onclose;
		showLog("connecting...");
	},

	_onopen : function() {
		showLog("connected to server!");
	},

	_send : function(message) {
		if (this._ws)
			this._ws.send(message);
	},

	send : function(text) {
		if (text != null && text.length > 0) {
			server._send(text);
		}
	},

	_onmessage : function(m) {
		if (m.data) {
			showMessage("others", m.data);
		}
		showLog("onmessage");
	},

	_onclose : function(m) {
		this._ws = null;
		showLog("onclose");
	}
};

下面的test.html和test.js簡單實現了群聊聊天室:

test.html
test.js

test2.html則用html5的canvas實現了電子白板的功能:

test2.html

 
相關資料:

http://git.warmcat.com/cgi-bin/cgit/libwebsockets/

http://dev.w3.org/html5/websockets/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM