首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >HTML5 SharedWorker中的socket.io Websocket连接

HTML5 SharedWorker中的socket.io Websocket连接
EN

Stack Overflow用户
提问于 2015-12-03 15:35:40
回答 2查看 6.4K关注 0票数 1

我希望你们都做得很好。我正在尝试从 worker.js 文件内部建立到socket.io服务器的连接,使用importScripts加载socket.io-client js文件,该文件与worker.js位于同一目录中。在使用var socket =io.connect(‘http://38.98.xxx.xxx:6000’)加载socket.io-client之后,我尝试在不同的主机上建立到socket.io服务器的连接,但它不起作用。请给我指出正确的方向,我很感谢你的帮助。

代码语言:javascript
复制
    <script>
    var worker = new SharedWorker("http://baseUrl.com/js/push/worker/worker.js");

    worker.port.addEventListener("message", function(e) {
        console.log("Got message: " + e.data);
    }, false);
    worker.port.start();
    worker.port.postMessage("start");

</script>

worker.js

代码语言:javascript
复制
importScripts('socket.io.js');

var socket = io.connect('http://38.98.154.167:6000');

var connections = 0;

self.addEventListener("connect", function(e) {
    var port = e.ports[0];
    connections ++;
    port.addEventListener("message", function(e) {
        if (e.data === "start") {

            port.postMessage('hello');
        }
    }, false);
    port.start();
}, false);


socket.on('connect', function () {
    port.postMessage('connect');
});

socket.on('disconnect', function () {
    port.postMessage('disconnect');
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-03 17:04:27

我想通了。我就得搬走

代码语言:javascript
复制
socket.on('connect', function () {
    port.postMessage('connect');
});

socket.on('disconnect', function () {
    port.postMessage('disconnect');
});

添加到worker.js中的self.addEventListener("connect", function(e) {});中,并从var socket=io.connect('http://38.98.xxx.xxx:6000');更改为

代码语言:javascript
复制
var socket = io('http://38.98.xxx.xxx:6000');

如果有人需要的话,这是一个有效的例子。

worker.js

代码语言:javascript
复制
  importScripts('socket.io.js');

var socket = io('http://38.98.xxx.xxx:6000');

var connections = 0;

self.addEventListener("connect", function(e) {
    var port = e.ports[0];
    connections ++;
    port.addEventListener("message", function(e) {
        if (e.data === "start") {

            port.postMessage('hello');
        }
    }, false);
    port.start();

    socket.on('push', function(pushed){

        port.postMessage(pushed);
    });


    socket.on('connect', function () {
        port.postMessage('connect');
    });

    socket.on('disconnect', function () {
        port.postMessage('disconnect');
    });

}, false);
票数 10
EN

Stack Overflow用户

发布于 2018-07-18 08:00:16

const io = require('socket.io-client');的替代者有所下降

它在专用网络工作者中为返回的套接字运行连接。它是

代码语言:javascript
复制
const io = require('sockerworker.io');
const socket = io([url][, options]);

您可以使用以下代码,而不是为webworker编写自己的样板。可通过npm获取here。(披露:我是它的作者。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34060237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档