如何使用socket.io browserify?

3
如何在browserify中使用socket.io?
当socket.io安装在node应用程序中时,它会为该socket.io脚本创建此URL路径:
/socket.io/socket.io.js
但是,需要传递给browserify的文件的实际路径是什么(相对于node_modules目录)?
例如,是
socket.io-client/socket.io.js
还是
socket.io/lib/client.js
在socket.io-client的文档中,它说“Socket.IO与browserify兼容”。但他们没有说明如何做到。
4个回答

3
如果您使用browserify作为window全局对象无法正常工作,请使用以下代码进行集成:
var io = require('socket.io-client');
window.io = io;

它起作用了,谢谢。有更好的方法吗? - joe.js

2
这是一个简单的客户端代码示例:
// client.js
var socket = require('socket.io-client')();
socket.on('message', ...);

您可以使用Browserify进行打包:
browserify client.js > bundle.js

为了让它工作,我需要传递URL和端口,即var socket = require('socket.io-client')("http://localhost:8080"); - Galen Long

0
路径将完全相同,因为是服务器提供socket.io客户端库(而我猜你没有将服务器browserify化,对吧?)。
但我使用了更方便的解决方案:看看这个。
io  =   require 'socket.io-client'

class Network

    constructor: (game, refresh_infos) ->

        @sock = io()
        #...

    pending: (name, cb) ->

        @name = name
        @sock.emit 'pending', name: name
        @sock.on 'new_game', (data) => cb data

阿布拉卡达布拉!


这是Coffeescript,但我猜你应该不会有太大困难将其翻译成JS。 - Loic Coenen
路径将完全相同,因为......抱歉我的无知,但是与什么完全相同? - LongHike
就像你没有使用Browserify一样。 - Loic Coenen
我不这么认为。但也许我的问题不够具体。我想做的事情类似于这个(简化的例子):`app.get('/myscript.js', function( req, res) {var jsFiles = ['local/path/node_modules/socket.io-client/lib/index.js', local/path/someother.js]; var b = browserify(jsFiles).bundle(); b.on('error', console.error); b.pipe(res);});`抱歉,这段代码没有正确格式化。 - LongHike
嗨,所以你想直接并动态地将 socket.io-client 包含到你的捆绑包中?为什么不只是在你的客户端代码上方引入它呢? - Loic Coenen

0

导入客户端,然后使用以下代码将其分配给变量:

var client = require('socket.io/lib/client');

然后您可以调用client


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接