从Meteor.js打开一个Websocket连接
我们怎样才能从Meteor打开一个Websockets连接?
我们可以做些什么:
ws = new WebSocket('ws://localhost/path'); ws.on('open', function() { ws.send('something'); }); ws.on('message', function(message) { console.log('received: %s', message); });
错误: ReferenceError: WebSocket is not defined
使用socket.io npm包
var io = Meteor.require('socket.io') var socket = io.connect('http://localhost');
错误: TypeError: Object #<Object> has no method 'connect'
使用ws npm包
var WebSocket = Meteor.require('ws'); var ws = new WebSocket('ws://localhost');
错误: Error: Cannot find module '../build/default/bufferutil'
我创build了一个新的meteor包joncursi:socket-io-client
来解决这个问题。 有关更多详细信息和示例用法,请参阅https://atmospherejs.com/joncursi/socket-io-client 。 由于我已经将NPM二进制文件捆绑到一个软件包中,所以您不必担心安装NPM软件包,声明NPM.require()
依赖性等。最重要的是,您可以部署到.meteor.com
而无需一个顺利。
有一个名为Meteor Streams的包,可以让你做类似的事情,使用现有的meteorwebsocket连接到本地服务器:
chatStream = new Meteor.Stream('chat'); if(Meteor.isClient) { sendChat = function(message) { chatStream.emit('message', message); console.log('me: ' + message); }; chatStream.on('message', function(message) { console.log('user: ' + message); }); }
我不确定你想连接到另一台服务器或本地服务器,如果它是另一台服务器,你可以使用你提供的例子。 我build议在客户端不允许使用websocket(因此需要websocket仿真)的情况下,使用其他类似SockJS或socket.io的东西。
根据这个问题的答案,这是一个openshift博客文章,你回答是:(问题: 如何为客户端设置meteorWebSocket端口? )
我现在挣扎了一会儿,我尝试了不同的东西。 在OpenShift中为我工作的解决scheme是这样的:
设置DDP_DEFAULT_CONNECTION_URLvariables
//for http process.env.DDP_DEFAULT_CONNECTION_URL = 'http://' + process.env.OPENSHIFT_APP_DNS + ':8000' //for ssl process.env.DDP_DEFAULT_CONNECTION_URL = 'https://' + process.env.OPENSHIFT_APP_DNS + ':8443'
根据这个博客文章: https : //www.openshift.com/blogs/paas-websockets
你可以试试这里是解决scheme: https : //github.com/Akryum/meteor-socket-io