我對此有點困惑,並且希望確保我不會天真地瞭解它是如何工作的。客戶端JavaScript是否也必須託管在Google App Engine上?假設我在我的開發服務器上創建了一個頻道,然後我的計算機上有一個本地HTML文件(非託管),並具有所需的JavaScript,並且我使用一個標記連接到該頻道 - 這是否可行?或者這不是渠道如何運作?谷歌應用程序引擎通道API javascript位置
編輯:
我只有在同一目錄中的HTML文件作爲我的app.yaml文件(這樣的根目錄我的網站)。我在devserver。
首先我創建了一個通道,並獲得令牌:
token = channel.create_channel('1')
print token
>>> channel-4132644671-1352248413-1
然後我複製令牌在我的HTML文件:
<html>
<head>
<script type="text/javascript" src="http://localhost:8080/_ah/channel/jsapi"></script>
</head>
<body >
<script>
var token = 'channel-4132644671-1352248413-1';
var channel = new goog.appengine.Channel(token);
var socket = channel.open();
socket.onopen = function() { alert('open'); };
socket.onmessage = function() { alert('message'); };
socket.onerror = function() { alert('error'); };
socket.onclose = function() { alert('close'); };
</script>
</body>
</html>
我打開Safari瀏覽器的HTML文件。我收到一條提示「開放」。然而,無論我在var token
中輸入什麼標記,我都會收到「開放」警報,因此我不確定是否獲取警報意味着什麼。
然後我做的: channel.send_message('1', 'hi')
而且什麼也沒有發生在我的HTML文件。沒有警報。我究竟做錯了什麼?
嗯,我並不是真的試圖自己做。我只是試圖在我的本地系統上進行測試。我在localhost:8080的開發服務器上運行GAE,並且我在同一個目錄中有一個HTML文件,並且我試圖讓渠道工作,但沒有成功。這就是我想要做的......任何想法? – Snowman
查看我剛剛發佈的修改。 – Snowman
您的html文件的file:// ... url也可能與相同的原始策略發生衝突。我建議創建一個靜態/目錄並將文件放在那裏,然後配置app.yaml以使靜態處理程序部分指向它。然後,html和js都將通過http:// localhost:8080提供。 –