我对 javascript 相当陌生,我几乎整天都在查看脚本,看看是否有办法嗅探 websocket 流量以进行调试和研究,或者用我自己的简单替换 websocket。
我试过用 Chrome 过滤并使用提琴手,一切都以某种方式隐藏了流量。Wireshark 似乎抓住了一些两者都找不到的东西,但至少对不熟悉十六进制的我来说,它是无稽之谈。
但是我真的很想知道是否可以在 javascript 中扩展 Websocket 之类的东西,这样当它使用 Greasemonkey 之类的东西创建时,我可以“扩展”它,以便它继续做它应该做的事情,但也做额外的工作。
例如,是否可以在说 Greasemonkey 中扩展以下 websocket,以便 onMessage(evt) 它继续写入屏幕,但随后我可以添加警报(消息);?? 这比说看交通更可取。注意我不能更改源文件。
谷歌浏览器没有为像亚特兰蒂斯之龙这样的游戏识别网站 websocket,动作是 ajax 帖子,但聊天是一个 websocket,可以在 flash 参数中找到。
<!DOCTYPE html>
<meta charset="utf-8" />
<title>WebSocket Test</title>
<script language="javascript" type="text/javascript">
var wsUri = "ws://echo.websocket.org/";
var output;
function init()
{
output = document.getElementById("output");
testWebSocket();
}
function testWebSocket()
{
websocket = new WebSocket(wsUri);
websocket.onopen = function(evt) { onOpen(evt) };
websocket.onclose = function(evt) { onClose(evt) };
websocket.onmessage = function(evt) { onMessage(evt) };
websocket.onerror = function(evt) { onError(evt) };
}
function onOpen(evt)
{
writeToScreen("CONNECTED");
doSend("WebSocket rocks");
}
function onClose(evt)
{
writeToScreen("DISCONNECTED");
}
function onMessage(evt)
{
writeToScreen('<span style="color: blue;">RESPONSE: ' + evt.data+'</span>');
websocket.close();
}
function onError(evt)
{
writeToScreen('<span style="color: red;">ERROR:</span> ' + evt.data);
}
function doSend(message)
{
writeToScreen("SENT: " + message);
websocket.send(message);
}
function writeToScreen(message)
{
var pre = document.createElement("p");
pre.style.wordWrap = "break-word";
pre.innerHTML = message;
output.appendChild(pre);
}
window.addEventListener("load", init, false);
</script>
<h2>WebSocket Test</h2>
<div id="output"></div>
</html>
我在stackoverflow中发现了这个我会用websocket替换日期吗?
Date = function (Date) { return function () { var date = clockwork.instantiate(Date, arguments); var args = arguments.length; var arg = arguments[0]; if ((args === 3 || args == 6) && arg < 100 && arg >= 0) date.setFullYear(arg); return date; } }(Date);