Firefox webgl 上的 Websocket
Posted
技术标签:
【中文标题】Firefox webgl 上的 Websocket【英文标题】:Websocket on firefox webgl 【发布时间】:2015-01-09 21:25:06 【问题描述】:我的游戏有问题。我正在 WebGL 中使用 Unity3D 5 开发游戏。游戏使用 Web 套接字连接到服务器,其地址如下所示:
wss://serveraddress:8443/moreaddress
它使用 javascript 实现连接到服务器。 javascript看起来像这样:
var WSClient =
socket: null,
url: null,
connect: function(host)
if ('WebSocket' in window)
this.socket = new WebSocket(host);
else if ('MozWebSocket' in window)
this.socket = new MozWebSocket(host);
else
Console.log('Error: WebSocket is not supported by this browser.');
return;
this.socket.onopen = function()
SendMessage("WebSocketManager","OnOpenWebSocket");
;
this.socket.onclose = function()
SendMessage("WebSocketManager","OnCloseWebSocket");
;
this.socket.onmessage = function(message)
if(typeof message == "string")
SendMessage('WebSocketManager','OnMessageReceived', message);
;
,
initialize: function(url)
if (typeof url !== "undefined")
this.url = url;
if (this.url == null)
Console.log('Info: Initialize without an URL');
return;
this.connect(this.url);
,
sendMessage: function(msg)
if (msg != '')
this.socket.send(msg);
,
close: function()
this.socket.close();
;
SendMessage 函数只是在 Unity 中调用函数的东西。所以基本上发生在我身上的事情是在我的游戏连接到服务器后,onOpen()
函数被调用,然后从 Unity 调用我的 OnOpenWebSocket()
函数,然后尝试向服务器发送消息以登录,服务器接收该消息并尝试向我发送答案,但我在onMessage()
函数中得到的只是这条消息:"isTrusted":true.
这发生在 Firefox 上,但在 Chrome 上运行良好。在 Chrome 上,我从我的服务器收到了正确的消息。而且服务器中没有写isTrusted
的地方。
我使用的是 Firefox 33.0。和 Chrome 39.0.2171.95
我查看了firefox的about:config
,websocket
是启用的。
有人知道是什么原因造成的吗?
【问题讨论】:
【参考方案1】:我在尝试使用 websocket 时遇到了同样的问题。我将代码更改为
var ws = new WebSocket("ws://localhost:3331"); // some url
ws.onmessage = function(event)
console.log(event.data);
然后它在 Firefox 上运行了! onmessage 回调是 EventListener 类型,并接收 MessageEvent 作为参数,请参阅https://developer.mozilla.org/en-US/docs/Web/API/WebSocket。
【讨论】:
以上是关于Firefox webgl 上的 Websocket的主要内容,如果未能解决你的问题,请参考以下文章